Leetcode#2.Add Two Numbers

来源:互联网 发布:华威医药 知乎 编辑:程序博客网 时间:2024/05/16 02:32
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
   ListNode res=null,prev=null;
        ListNode p1=l1,p2=l2;
        boolean jinwei=false;
        while(p1!=null&&p2!=null){
            int tmp1=p1.val+p2.val;
            if(prev!=null&&jinwei) tmp1++;//如果不是第一次并且上次有进位,则本次增1
            jinwei=(tmp1/10==1?true:false);
            if(prev==null){
                res=prev= new ListNode(tmp1%10);
            }else{
                prev.next=new ListNode(tmp1%10);
                prev=prev.next;//每增加一个节点,前一个节点的指针也要向后移动一个
            }
            p1=p1.next;
            p2=p2.next;
        }//相同位数的已经完毕
        if(p1!=null){
        while(p1!=null){//p1还剩下,p1位数更多些
            int tmp1=p1.val;
            if(prev!=null&&jinwei) tmp1++;//如果不是第一次并且上次有进位,则本次增1
            jinwei=(tmp1/10==1?true:false);
            if(prev==null){
                res=prev=new ListNode(tmp1%10);
            }else{
                prev.next=new ListNode(tmp1%10);
                prev=prev.next;
            }
            p1=p1.next;
          }
        if(jinwei) {
            prev.next=new ListNode(1);
          }
        }else if(p2!=null){
            while(p2!=null){//p1还剩下,p1位数更多些
                int tmp2=p2.val;
                if(prev!=null&&jinwei) tmp2++;//如果不是第一次并且上次有进位,则本次增1
                jinwei=(tmp2/10==1?true:false);
                if(prev==null){
                    res=prev=new ListNode(tmp2%10);
                }else{
                    prev.next=new ListNode(tmp2%10);
                    prev=prev.next;
                }
                p2=p2.next;
              }
            if(jinwei) {
                prev.next= new ListNode(1);
            }
        }else{
            if(jinwei) {
                prev.next= new ListNode(1);
            }
        }
        return res;
  }

}


0 0
原创粉丝点击