Files
Hot-100-Algorithm/链表/两数相加/main.go
JACKYMYPERSON b2e4a26c09 增加新题目
2025-08-24 01:04:53 +08:00

103 lines
1.8 KiB
Go

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
}