【发布时间】:2015-05-30 09:39:29
【问题描述】:
我正在尝试实现一个函数来添加两个表示为反向链接列表的数字。在我看来,代码是正确的,但是在两个只包含一个数字 [5] 的链表中给出输入。输出结果是 [0],但它应该是 [0]->[1]
示例 第一个列表: 5->6->3 // 代表数字 365 第二个列表: 8->4->2 // 代表数字 248 。结果列表:3->1->6 //代表数字 613
谁能告诉我我在逻辑上做错了什么?`
/**
* 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) {
//find length
int carry = 0;
ListNode sum = null;
int x = 0;
ListNode top = new ListNode(0);
while(l1 != null || l2 != null){
sum = new ListNode((l1.val+l2.val+carry)%10);
// sum.val = (l1+l2+carry)%10;
if(x==0){
top.next = sum;
x++;
}
carry = (l1.val+l2.val)/10;
l1 = l1.next;
l2 = l2.next;
sum = sum.next;
}
if(l1 == null && l2 == null){
//return top;
}else if(l1 != null && l2 == null){
while(l1 != null){
sum = new ListNode((l1.val+carry)%10);
// sum.val = (l1+carry)%10;
if(x==0){
top.next = sum;
x++;
}
carry = (l1.val)/10;
l1 = l1.next;
sum = sum.next;
}
//return top;
}else{
while(l1 != null){
sum = new ListNode((l2.val+carry)%10);
// sum.val = (l2+carry)%10;
if(x==0){
top.next = sum;
x++;
}
carry = (l2.val)/10;
l2 = l2.next;
sum = sum.next;
}
//return top;
}
if(carry == 1){
sum = new ListNode(1);
sum = sum.next;
}
return top.next;
}
}`
【问题讨论】:
-
我觉得你的解释有点混乱......
-
First List: 5->6->3 // 代表数字 365 Second List: 8->4->2 // 代表数字 248 .结果列表:3->1->6 //代表数字 613
-
好的,在此基础上编辑你的问题,让想要帮助你理解你的问题的人更容易理解
-
请发布您的完整代码以及插入和主要方法,以便轻松找到错误
-
没有完整的代码。我在这里解决这个问题 --> leetcode.com/problems/add-two-numbers
标签: java