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

178 lines
3.1 KiB
Go

package main
import (
"fmt"
)
type ListNode struct {
Val int
Next *ListNode
}
func main() {
}
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
signal := false
tmpstr := ""
firstNode := (*ListNode)(nil)
result := (*ListNode)(nil)
value1 := 0
for l1 != nil || l2 != nil {
//
tmpNode := &ListNode{}
a := 0
if signal {
a = 1
}
if l1 == nil {
value := l2.Val
if value+a > 9 {
signal = true
} else {
signal = false
}
tmpNode.Val = (value + a) % 10
result.Next = tmpNode
result = result.Next
l2 = l2.Next
continue
}
if l2 == nil {
value := l1.Val
if value+a > 9 {
signal = true
} else {
signal = false
}
fmt.Println("l2==nil")
tmpNode.Val = (value + a) % 10
result.Next = tmpNode
result = result.Next
l1 = l1.Next
continue
}
value := l1.Val + l2.Val
if value+a > 9 {
signal = true
} else {
signal = false
}
tmpNode.Val = (value + a) % 10
if value1 == 0 {
firstNode = tmpNode
result = tmpNode
value1 = 1
l1 = l1.Next
l2 = l2.Next
continue
}
result.Next = tmpNode
result = result.Next
l1 = l1.Next
l2 = l2.Next
}
if signal {
tmpNode := &ListNode{}
tmpNode.Val = 1
result.Next = tmpNode
result = result.Next
}
fmt.Println(tmpstr)
return firstNode
}
//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
//}