StackTc 2017-11-30 14:47 采纳率: 90.9%
浏览 1194
已采纳

leetcode第二题 add two number

 class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode root = new ListNode(0);
        ListNode returnNode = root;
        int carry = 0;
        int sum = 0;
        if(l1 == null){
            return l2;
        }
        if(l2 == null){
            return l1;
        }
        while(l1 != null || l2 != null){
            int q = (l1 != null) ? l1.val : 0;
            int p = (l2 != null) ? l2.val : 0;
            sum = (p + q) + carry;
            carry = sum / 10;
            returnNode.next = new ListNode(sum % 10);
            returnNode = returnNode.next;
            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next;
        }
        if(carry > 0){
            returnNode.next = new ListNode(carry);
        }
        return root.next;
    }
}

求稳root存在的意义,好像没有root就会报空指针,还有为什么一直在对returnNode操作,最后缺可以返回root.next 里面包含了returnNode的内容。

  • 写回答

4条回答 默认 最新

  • Debug_dodge 2017-12-01 00:28
    关注

    不给题目简直是耍流氓。

     returnNode.next = new ListNode(sum % 10);
     returnNode = returnNode.next;
    
     returnNode.next = new ListNode(carry);
    

    你问的问题应该能用这两句解释。
    这里设置了returnNode.next,如果returnNode没有初始化,这里会报错。
    下一句在第一次迭代时把returnNode设置为root.next,以及产生进位时也将其置为root.next(returnNode一开始初始化为root的),所以直接返回root.next,返回的是第一次迭代时得到的那个东西,它上面挂着后面的位。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度