增加新题目

This commit is contained in:
JACKYMYPERSON
2025-08-24 01:04:53 +08:00
parent 70fe6d292c
commit b2e4a26c09
2 changed files with 157 additions and 4 deletions

102
链表/两数相加/main.go Normal file
View File

@@ -0,0 +1,102 @@
package main
type ListNode struct {
Val int
Next *ListNode
}
func main() {
}
//func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
// var str1 string
// var str2 string
//
// for l1 != nil {
// if len(str1) < 0 {
// str1 = strconv.Itoa(l1.Val)
// continue
// }
// str1 += strconv.Itoa(l1.Val)
// }
// intnum1 := reverse(str1)
//
// for l2 != nil {
// if len(str2) < 0 {
// str2 = strconv.Itoa(l2.Val)
// continue
// }
// str2 += strconv.Itoa(l2.Val)
// }
// intnum2 := reverse(str2)
// intnum3 := strconv.Itoa(reverse(strconv.Itoa(intnum1 + intnum2)))
// firstNode := (*ListNode)(nil)
// result := (*ListNode)(nil)
// value := 0
// for i := 0; i < len(intnum3); i++ {
// tmp := &ListNode{}
// if value == 0 {
// tmp.Val = int(intnum3[i])
// firstNode = tmp
// result = tmp
// value = 1
// continue
//
// }
// tmp.Val = int(intnum3[i])
// result.Next = tmp
// result = result.Next
//
// }
//
// return firstNode
//}
//func reverse(s string) int {
// b := []byte(s)
// for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
// b[i], b[j] = b[j], b[i]
// }
// num, _ := strconv.Atoi(string(b))
// return num
//}
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
firstNode := (*ListNode)(nil)
result := (*ListNode)(nil)
value := 0
for l1 != nil || l2 != nil {
tmpNode := &ListNode{}
if l1 == nil {
tmpNode.Val = l2.Val
result.Next = tmpNode
result = result.Next
l2 = l2.Next
continue
} else if l2 == nil {
tmpNode.Val = l1.Val
result.Next = tmpNode
result = result.Next
l1 = l1.Next
continue
}
tmpNode.Val = l1.Val + l2.Val
if value == 0 {
firstNode = tmpNode
result = tmpNode
l1 = l1.Next
l2 = l2.Next
value++
continue
}
result.Next = tmpNode
result = result.Next
l1 = l1.Next
l2 = l2.Next
}
return firstNode
}

View File

@@ -1,5 +1,7 @@
package main package main
import "fmt"
type ListNode struct { type ListNode struct {
Val int Val int
Next *ListNode Next *ListNode
@@ -11,10 +13,59 @@ func main() {
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode { func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
upP := list1 upP := list1
dnP := list2 dnP := list2
for upP.Next != nil && dnP.Next != nil { firstNode := (*ListNode)(nil)
if upP.Next == nil { value := 0
Ponit := (*ListNode)(nil)
if list1 == nil {
if list2 == nil {
return nil
} }
return list2
} }
return nil if list2 == nil {
return list1
}
for upP != nil || dnP != nil {
tmpP := &ListNode{}
if upP == nil {
tmpP.Val = dnP.Val
Ponit.Next = tmpP
dnP = dnP.Next
Ponit = Ponit.Next
fmt.Println("停留1")
continue
}
if dnP == nil {
tmpP.Val = upP.Val
Ponit.Next = tmpP
upP = upP.Next
Ponit = Ponit.Next
fmt.Println("停留2")
continue
}
if upP.Val >= dnP.Val {
tmpP.Val = dnP.Val
dnP = dnP.Next
} else {
tmpP.Val = upP.Val
upP = upP.Next
}
if value == 0 {
Ponit = tmpP
firstNode = Ponit
value++
continue
}
Ponit.Next = tmpP
Ponit = Ponit.Next
value++
}
return firstNode
} }