2018-08-26

作者: 李红斌_三月 | 来源:发表于2018-08-26 17:50 被阅读68次

题目如下:
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

直接能够想到的就是把链表中的数组组成一个整数然后相加,但是对于较长的链表而言,整数范围是不够滴(leetcode上最后的例子数字已经超过了64位所能代表的最大整数,浮点数没有具体计算过),而且时间复杂度,应该是O(2(m+n)),取数一次操作,赋值又一次操作.所以这里考虑将每一个节点的值相加,然后赋值给新的链表,时间复杂度为O(max(m,n)),并且不会出现数值过大无法计算的情况.

代码如下

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {

    p1 := l1
    p2 := l2
    p1Next := p1
    p2Next := p2
    p3 := &ListNode{}
    p3Next := p3
    CF := 0

    for {

        if p1Next != nil || p2Next != nil || CF != 0{

            v1 :=0
            if(p1Next != nil){
                 v1= p1Next.Val
            }
            v2 := 0
            if(p2Next != nil){
                v2= p2Next.Val
            }

            val := v1 + v2 + CF
            if val >= 10 {
                p3Next.Val = val - 10
                CF = 1
            } else {
                p3Next.Val = val
                CF = 0
            }

            if p1Next != nil {
                p1Next = p1Next.Next
            }
            if p2Next != nil {
                p2Next = p2Next.Next
            }

            if(p1Next != nil || p2Next!= nil || CF!=0){
                p3Next.Next = &ListNode{}
                p3Next = p3Next.Next
            }
        }else{
            break
        }
    }
    return p3
}

相关文章

  • 2018-08-26

    2018-08-26 现在立刻马上 2018-08-26 20:53 · 字数 599 · 阅读 0 · 日记本 ...

  • 付出不亚于任何人的努力

    戴师傅 2018-08-26 2018-08-26 20:32 打开App (稻盛哲学学习会)打卡第122天 姓名...

  • 小程序学习第8天

    2018-08-26昨天没学,空白。

  • 2018-08-26

    2018-08-26 陈顺富简书作者 2018-08-26 09:28 打开App 部门:三分厂 岗位:真空常白班...

  • 2018-08-27

    【59号-张玉-如何学习读后总结】 2018-08-26 22:09 · 字数 594 · 阅读 2 · 日记本 ...

  • 2018-08-26

    2018-08-26 事件:今天参加以前同事孩子的婚礼。 感受:惊叹,感动。 对方:欣喜,开心,激动。 想法:时间...

  • L4-U1-2-Vocabulary2-Dialogue

    流利说 D60 2018-08-26 日 一、复习 Level4-Unit1-Part2*Learning- Vo...

  • 2018-08-27

    江苏万千工品金秀 万千工品金秀 2018-08-26 20:48 · 字数 155 · 阅读 11 · 日记本 姓...

  • 用正则表达式做日期格式化

    输出:2018-08-26 21:11:15可以输入其他的分隔符YYYY/MM/dd HH:mm:ss 201...

  • 颠覆世界的互联网思维(二)

    2018-08-26 D28 / 33 【读书感悟】3173-安安 Chapter 1 以你为中心:自我颠覆背后的...

网友评论

  • 李云_三月:思维不错,但是这题目很不能见名知意的!

本文标题:2018-08-26

本文链接:https://www.haomeiwen.com/subject/sewoiftx.html