Leetcode第二题 Add Two Numbers 两数相加
题目描述:给定两个ListNode,要求这两个ListNode的节点两两相加之后,返回一个ListNode。 解题思路:这个题比较简单,把两个单项链表中同一位置节点的值相加,组成一个新的ListNode返回,但是需要注意一下两点。
- 节点里的值只能是 1<= value && value <= 9,所以两个值相加大于9的时候,需要向前进一位。
- 因为两个链表的长度是不一定的,所以要处理链表为空的情况
解题代码如下:
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. 哈哈 这个解法还有很大的提升空间啊。