原题链接:https://leetcode.com/problems/add-two-numbers/
思路两个val和进位carry相加,组成新点往后连,注意两个list长度不同和最后是否还有一个进位的情况。
AC Java:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null && l2 == null){
return null;
}
int carry = 0;
int sum = 0;
ListNode dunmy = new ListNode(0);
ListNode iter = dunmy;
while(l1 != null && l2!= null){
sum = l1.val + l2.val + carry;
carry = sum/10;
sum = sum%10;
ListNode temp = new ListNode(sum);
iter.next = temp;
iter = iter.next;
l1 = l1.next;
l2 = l2.next;
}
while(l1!=null){
sum = l1.val + carry;
carry = sum/10;
sum = sum%10;
ListNode temp = new ListNode(sum);
iter.next = temp;
iter = iter.next;
l1 = l1.next;
}
while(l2!=null){
sum = l2.val + carry;
carry = sum/10;
sum = sum%10;
ListNode temp = new ListNode(sum);
iter.next = temp;
iter = iter.next;
l2 = l2.next;
}
if(carry != 0){
ListNode temp = new ListNode(carry);
iter.next = temp;
}
return dunmy.next;
}
}