题目题目题目在这
解题思路:迭代
- 由题目得,每次对于两个节点相加都需要先判断是否前一位有进位,有则两个节点的和加上进位,无则只加两个节点的和。进位默认初始值为0.
- 所以用迭代循环去做,当每次其中有一个节点不为空时,或者是都为空但是前一个有进位,则都要进入循环。
- 循环中获取两个节点的值,如果节点为空,则获取0,然后得到节点值相加在加上进位得到总和,记录进位赋值成中和取整10,然后就是创建一个节点,节点值为总和求余10,
- 每次做完判断2个节点是否为空,不为空,则让它等于它的下一个节点。
ok,结束了,上代码
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode l = new ListNode(0);
ListNode flag=l;
int count=0;
while(l1!=null||l2!=null||count!=0){
int value1 = l1==null?0:l1.val;
int value2 = l2==null?0:l2.val;
int sum = value1+value2+count;
count=sum/10;
ListNode ll = new ListNode(sum%10);
flag.next=ll;
flag=ll;
if(l1!=null){
l1=l1.next;
}
if(l2!=null){
l2=l2.next;
}
}
return l.next;
}
}
再见
不懂就问~~
博主时常在线陪聊~
免费不要钱