问题
给两个链表形式表示的正整数,求它们的和
分析
每一位逐步做加法,进位储存下来。假设当前做加法的数字为a,b,进位记为flag;则当前位的数值 =(a+b+flag)%10 ,下一位进位 flag = (a+b+flag)/10。(flag初始化为0)
代码
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int a, b;
ListNode r = new ListNode(0);
ListNode r1 = r;
ListNode r2 = null;
int flag = 0;
while (l1 != null || l2 != null) {
a = 0;
b = 0;
if(l1 != null)a=l1.val;
if(l2 != null)b=l2.val;
r2 = new ListNode((a + b + flag) % 10);
flag = (a + b + flag) / 10;
r1.next = r2;
r1 = r1.next;
if(l1 != null)l1=l1.next;
if(l2 != null)l2=l2.next;
}
if(flag!=0){
r2.next=new ListNode(flag);
}
return r.next;
}