Leetcode第二题 Add Two Numbers 两数相加

173 阅读1分钟

Leetcode第二题 Add Two Numbers 两数相加

题目描述:给定两个ListNode,要求这两个ListNode的节点两两相加之后,返回一个ListNode。 解题思路:这个题比较简单,把两个单项链表中同一位置节点的值相加,组成一个新的ListNode返回,但是需要注意一下两点。

  1. 节点里的值只能是 1<= value && value <= 9,所以两个值相加大于9的时候,需要向前进一位。
  2. 因为两个链表的长度是不一定的,所以要处理链表为空的情况

解题代码如下:

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode result=new ListNode(-1);
        ListNode current=result;
        //下一位进位标示
        int carry=0;
        while(l1 != null || l2 != null){
            int sum=carry;
            //为空的处理
            if(l1!=null){
                sum+=l1.val;
                l1=l1.next;
            }
            if(l2!=null){
                sum+=l2.val;
                l2=l2.next;
            }
            //处理下当前节点
            current.next= new ListNode(sum%10);
            carry=sum/10;
            //指向下一个节点
            current=current.next;
        }
        if(carry==1){
            current.next= new ListNode(1);
        }
        return result.next;
    }
}

运行结果 Runtime: 2 ms, faster than 66.10% of Java online submissions for Add Two Numbers.

Memory Usage: 39.4 MB, less than 51.01% of Java online submissions for Add Two Numbers. 哈哈 这个解法还有很大的提升空间啊。