Leetcode2 Add Two Numbers

之前没按顺序做,发现原来第二题也是挺有做头的,以后可以按顺序先刷前150道。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode firstNode = new ListNode(0);
        ListNode pre = new ListNode(-1);
        ListNode p1=l1,p2=l2;
        int carrybit =0;    //进位位,有进位设对应值,本题为1,无进位设为0
        boolean isFirst = true;
        while(p1!=null||p2!=null||carrybit!=0) {    //用例[5],[5],应输出[0,1]结果得到[0],故增加判断carrybit!=0
            ListNode tempNode;
            int temp=0;
            if(p1!=null&&p2!=null) {
                temp = p1.val+p2.val+carrybit;
                p1=p1.next;p2=p2.next;
            }
            else if(p1!=null&&p2==null) {
                temp = p1.val+carrybit;
                p1=p1.next;
            }
            else if(p1==null&&p2!=null) {
                temp = p2.val+carrybit;
                p2=p2.next;
            }
            else{
                temp = carrybit;
            }
            tempNode = new ListNode(temp%10);
            carrybit = temp/10;
            if(isFirst) {firstNode = tempNode;pre=firstNode;isFirst=false;}
            else {pre.next=tempNode;pre=tempNode;}
        }
        return firstNode;
    }
}

 

posted @ 2019-03-22 00:05  大胖子球花  阅读(60)  评论(0)    收藏  举报