leetcode 兩數相加 Go!


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]
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章