2. Add Two Numbers

来源:互联网 发布:linux下nslookup 编辑:程序博客网 时间:2024/05/17 06:06

需要注意,并且学习的地方有:

 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;    }}
原创粉丝点击