StackTc
StackTc
采纳率61.9%
2017-11-30 14:47

leetcode第二题 add two number

5
已采纳
 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 Debug_dodge 4年前

    不给题目简直是耍流氓。

     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,返回的是第一次迭代时得到的那个东西,它上面挂着后面的位。

    点赞 评论 复制链接分享
  • qq_41231989 mua廖可 4年前

    qwertyuoadfsfd

    点赞 评论 复制链接分享
  • qq_41233565 qq_41233565 4年前

    qwertyuoadfsfd

    点赞 评论 复制链接分享
  • asdfqwer123_4 asdfqwer123_4 4年前

    qwertyuoadfsfd

    点赞 评论 复制链接分享

相关推荐