type ListNode struct {
Val int
Next *ListNode
}
//我是将加到的sum组成ListNode结构体,然后放入切片,将切片的首位next一直指向左后一个元素即可
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
var slice []*ListNode
n1 := l1
n2 := l2
up := 0 // 进位,如果两个位上的数相加超过10,则为1,否则为0
for n1 != nil || n2 != nil {
c := n1.Val + n2.Val
sum := c + up
if sum >= 10 {up = 1} else {up = 0}
sum = sum % 10
slice = append(slice, &ListNode{Val: sum})
n1,n2 = n1.Next,n2.Next
if n1 == nil && n2 == nil {
break
}
if n1 == nil {
n1 = new(ListNode)
n1.Val = 0
}
if n2 == nil {
n2 = new(ListNode)
n2.Val = 0
}
}
if up == 1 {
slice = append(slice, &ListNode{Val: up})
}
for i := 0; i < len(slice); i++ {
if i == len(slice)-1 {
break
}
slice[i].Next = slice[i+1]
}
return slice[0]
}
leetcode 两数相加 Go!
最新推荐文章于 2022-06-28 10:53:38 发布