这里首先想到的应该就是一个简单的按位相加的过程,倒序也为我们减少了很多麻烦,只需简单注意进位的情况就好,使用nextUp变量标记了是否需要进位。
JAVA
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int nextUp = 0;
ListNode result = new ListNode((l1.val + l2.val) % 10);
ListNode head = result;
nextUp = (l1.val + l2.val) / 10;
l1 = l1.next;
l2 = l2.next;
while (l1 != null && l2 != null) {
int sum = l1.val + l2.val + nextUp;
ListNode listNode = new ListNode(sum % 10);
nextUp = sum / 10;
result.next = listNode;
result = result.next;
l1 = l1.next;
l2 = l2.next;
}
while (l1 != null) {
int sum = l1.val + nextUp;
ListNode listNode = new ListNode(sum % 10);
nextUp = sum / 10;
result.next = listNode;
result = result.next;
l1 = l1.next;
}
while (l2 != null) {
int sum = l2.val + nextUp;
ListNode listNode = new ListNode(sum % 10);
nextUp = sum / 10;
result.next = listNode;
result = result.next;
l2 = l2.next;
}
if(nextUp !=0){
ListNode listNode = new ListNode(nextUp);
result.next = listNode;
result = result.next;
}
return head;
}
}
执行用时 : 7 ms, 在Add Two Numbers的Java提交中击败了99.80% 的用户
内存消耗 : 45.9 MB, 在Add Two Numbers的Java提交中击败了77.26% 的用户
效果还行