刷个题-两数相加

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
}

测试结果

image.png

非常好的模式,让我今年收益翻倍的文章,强烈推荐分享下:
2020年4月至6月净利润断层实战小结-真香~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容