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;
}
}


浙公网安备 33010602011771号