Notes:
跟大数相加一样的原理;
最好在原来的链表上操作,这样最多只用开一个ListNode的空间;
O(n)的算法,竟然TLE !!!没天理啊!!T_T
/**
* 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){
return l2;
}
if(l2 == null){
return l1;
}
int cnt = 0, sum = 0;
ListNode pListNode = l1, headListNode = l1;
int k = 0;
while(l1.next != null && l2.next != null){
sum = cnt + l1.val + l2.val;
cnt = sum / 10;
sum %= 10;
l1.val = sum;
l1 = l1.next;
l2 = l2.next;
}
sum = cnt + l1.val + l2.val;
cnt = sum / 10;
sum %= 10;
l1.val = sum;
if(l1.next == null && l2.next == null){
}
else{
while(l2.next != null){
l1.next = l2.next;
}
l1 = l1.next;
while(l1.next != null){
sum = cnt + l1.val;
cnt = sum / 10;
sum %= 10;
l1.val = sum;
l1 = l1.next;
}
sum = cnt + l1.val;
cnt = sum / 10;
sum %= 10;
l1.val = sum;
}
if (cnt != 0){
ListNode newNode = new ListNode(cnt);
newNode.next = null;
l1.next = newNode;
}
return headListNode;
}
}
345

被折叠的 条评论
为什么被折叠?



