来源
https://leetcode-cn.com/problems/add-two-numbers
问题描述
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
知识点
链表
实现代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
list := &ListNode{}
var resultBit = 0
for {
var a = 0
var b = 0
if l1 == nil && l2 == nil {
if resultBit == 1 {
addNode(list, resultBit)
}
break
}
if l1 != nil {
a = l1.Val
l1 = l1.Next
}
if l2 != nil {
b = l2.Val
l2 = l2.Next
}
var temp = a + b + resultBit
var result = 0
if temp >= 10 {
result = temp % 10
resultBit = 1
} else {
result = temp
resultBit = 0
}
addNode(list, result)
}
return list.Next
}
func addNode(head *ListNode, val int) {
point := head //临时指针
for point.Next != nil {
point = point.Next //移位
}
tempListNode := &ListNode{}
tempListNode.Val = val
point.Next = tempListNode
}
主要考察对链表的使用,依次循环即可解决