需要注意,并且学习的地方有:
1.dummy node的使用 。如果不使用,则需要在循环外,多一次赋值操作;
2.多种情况的考虑,两个list长度不一致的情况(其一为空或者不等长);
3.最后一次循环有进位的情况。
以下为C#代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead=new ListNode(0);
ListNode p=l1,q=l2,curr=dummyHead;
int carry=0,sum,x,y;
while(p!=null||q!=null)
{
x=p!=null?p.val:0;
y=q!=null?q.val:0;
sum=x+y+carry;
curr.next=new ListNode(sum%10);
carry=sum/10;
if(p!=null)
p=p.next;
if(q!=null)
q=q.next;
curr=curr.next;
}
if(carry!=0)
curr.next=new ListNode(carry);
return dummyHead.next;
}
}