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

报告相同问题?

悬赏问题

  • ¥15 关于#ar#的问题:/* User can add his own implementation to report the HAL error return state */(语言-c语言)
  • ¥15 ImportError: DLL load failed while importing _iterative: 找不到指定的模块。
  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多
  • ¥15 相关性分析中,p<0.05, r=0.29,怎么评价相关性呢
  • ¥15 docker部署Mongodb后输入命令报错?
  • ¥15 将下列流程图转变成python程序代码
  • ¥15 我需要全国每个城市的最新小区名字等数据。
  • ¥15 开发一个小区生态的小程序
  • ¥15 如何解决Excel中dependent dropdown list 的问题
  • ¥15 MddBootstrapInitialize2失败