LEECODE题:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
附上递归方法
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func addTwoNode(mL1,mL2 *ListNode)*ListNode{
if mL1 ==nil && mL2 == nil{
return nil
}
if mL1 ==nil{
return mL2
}
if mL2 == nil{
return mL1
}
sum := mL1.Val + mL2.Val
nextNode := addTwoNode(mL1.Next,mL2.Next)
if sum<10{
return &ListNode{Val:sum,Next:nextNode}
}else {
tempNode := &ListNode{
Val:1,
Next:nil,
}
return &ListNode{
Val:sum-10,
Next:addTwoNode(nextNode,tempNode),
}
}
}
func main() {
//测试结果:
mL1 := makeListNode([]int{2,4,3})
mL2 := makeListNode([]int{5,6,4})
mSum := addTwoNode(mL1,mL2)
fmt.Println("\nmSum:")
for mSum!=nil{
fmt.Printf("%v ",mSum.Val)
mSum = mSum.Next
}
}
func makeListNode(nums []int) *ListNode {
if len(nums)==0{
return nil
}
res := &ListNode{
Val:nums[0],
}
temp := res
for i:=1;i<len(nums);i++{
temp.Next = &ListNode{Val:nums[i],}
temp = temp.Next
}
return res
}
测试结果
非常好的模式,让我今年收益翻倍的文章,强烈推荐分享下:
2020年4月至6月净利润断层实战小结-真香~