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!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.