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条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格