您的位置:首页 > 其它

[Leetcode] Add Two Numbers

2015-08-12 20:15 309 查看
数字表示为链表的格式,需要注意的几个地方:

一、在计算过程当中要注意进位问题,刚开始的进位为0,后面进位要在计算过程当中进行更新。

二、如果某个数字的list比较长,那么需要在最后将其加上

三、最后如果进位不是零,说明需要额外增加一位

代码如下:

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1==null||l2==null)
return l1==null?l2:l1;
int pre = 0;
ListNode newhead=null;
ListNode prenode=null;
while(l1!=null && l2!=null){
int sum = pre + l1.val+ l2.val;
ListNode tmp = new ListNode(sum%10);
pre=sum/10;
if(newhead==null){
newhead=tmp;
prenode=tmp;
}else{
prenode.next=tmp;
prenode=tmp;
}
l1=l1.next;
l2=l2.next;
}
ListNode leftnode= null;
if(l1==null)leftnode=l2;
else leftnode=l1;
while(leftnode!=null){
int sum=pre+leftnode.val;
ListNode tmp = new ListNode(sum%10);
prenode.next=tmp;
prenode=tmp;
pre=sum/10;
leftnode=leftnode.next;
}
if(pre!=0){
ListNode tmp =new ListNode(pre);
prenode.next=tmp;
tmp.next=null;
}
return newhead;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: