LeetCode之路——Add Two Numbers

来源:互联网 发布:ios 数组初始化 编辑:程序博客网 时间:2024/06/08 16:30

这一题相对来说还是有一点麻烦的,要考虑的情况比较多。
先贴上代码:

public class ListNode    {              int val;              ListNode next;              ListNode(int x) { val = x; }    }    public class Solution {        public ListNode addTwoNumbers(ListNode l1, ListNode l2)        {            ListNode l3=null;//结果链表            ListNode last =null;//定位链表最后一位            ListNode node =null;//node为新建节点            int i=0,j=0,temp=0;            while(l1!=null && l2!=null)            {                temp=l1.val+l2.val+i;                               j=temp%10;  //j为余数                              node = new ListNode(j);//新建一个节点                node.next=null;                i=temp/10;  //i为进位                              if(l3==null)                                    l3=node;                                else                    last.next=node;                 l1=l1.next; //l1向后移动                            l2=l2.next; //l2向后移动                last=node;  //last定位到最后一个节点                 }            while(l1!=null)//当l1非空            {                               temp=l1.val+i;                if(temp>=10)                {                    i=temp/10;                    j=temp%10;                    temp%=10;                }                else                {                    i=0;                }                node = new ListNode(temp);                last.next=node;                last=node;                l1=l1.next;            }            while(l2!=null)//当l2非空            {                 temp=l2.val+i;                if(temp>=10)                {                    i=temp/10;                    j=temp%10;                    temp%=10;                }                else                {                    i=0;                }                node = new ListNode(temp);                last.next=node;                last=node;                             l2=l2.next;            }            if(i!=0)//当进位未消除            {                node = new ListNode(i);                last.next=node;            }            return l3;                          }    }

这里提供一些测试case:
[1]add[9,9]
[3,7]add[9,2]
[8,9,9]add[2]
[9,8]add[1]
这里也需要注意一下时间复杂度。。。。。。

0 0