Leetcode问题:leetcode.com/problems/add-two-numbers /
(参考:Leetcode)您将获得两个代表两个非负数的链表。数字以相反的顺序存储,每个节点包含一个数字。添加两个数字并将其作为链接列表返回。 输入:(2 - > 4 - > 3)+(5 - > 6 - > 4) 输出:7 - > 0 - > 8
我的代码不起作用,但我认为它几乎是正确的。我的代码有什么问题?
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
int m = 0;
int next=0;
int recent=0;
ListNode head = new ListNode(0);
ListNode temp =head;
while (l1 != null && l2 != null) {
if (l1.val + l2.val < 10) {
m = l1.val + l2.val;
next=0;
}else{
m = (l1.val + l2.val)%10;
next=1;
}
temp.next=new ListNode(m+recent);
recent=next;
temp=temp.next;
l1 = l1.next;
l2 = l2.next;
}
if(l1 != null){
temp.next=new ListNode(l1.next.val+recent);
}
if(l2!= null){
temp.next=new ListNode(l2.next.val+recent);
}
if(recent!=0){
temp.next=new ListNode(recent);
}
System.out.print(head.next.val);
return head;
}
}
Leetcode问题:leetcode.com/problems/add-two-numbers /
我的代码不起作用,但我认为它几乎是正确的。我的代码有什么问题?
答案 0 :(得分:0)
问题是,suppose l1 is shorter than l2 by more than 1,
你没有正确地在循环外做其余的事情。
Because you only allocate one more node after you are outside loop.
由于你已经把大部分事情做对了,所以希望注意到这会很快帮助你。
答案 1 :(得分:0)
您的代码问题是
当最近= 1,m = 9或l1.next.val = 9时,节点值为10 或 l2.next.val = 9
未能处理l1 = 9-> 9-> 9-> 1且l2 = 1
为什么忽略 temp.next = new ListNode中的l2.val(l2.next.val + recent); ?