【发布时间】:2020-02-09 05:42:43
【问题描述】:
问题:给定两个代表两个非负整数的非空链表。这些数字以相反的顺序存储,它们的每个节点都包含一个数字。将两个数字相加 将其作为链表返回。您可以假设这两个数字不包含任何前导零,除了 0 本身**
示例: 工作测试用例如下: - 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) - 输出:7 -> 0 -> 8 - 解释:342 + 465 = 807。
我的解决方案不适用于以下测试用例:
- 输入:
- [9]
- [1,9,9,9,9,9,9,9,9,9]
- 输出:[0,-4,-6,-3,-8,-4,-7,-4,-1,-2]
- 预期:[0,0,0,0,0,0,0,0,0,0,1]
单链表的定义:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
这是我的解决方案
import java.lang.Math;
class Solution
{
public ListNode addTwoNumbers(ListNode l1, ListNode l2)
{
int count = 0;
int number1=0;
int number2=0;
int temp=0;
while(l1 !=null)
{
temp = l1.val;
number1 += temp*Math.pow(10,count);
count++;
l1= l1.next;
}
count = 0;
while(l2 !=null)
{
temp = l2.val;
number2 += temp*Math.pow(10,count);
count++;
l2= l2.next;
}
int sum = number1 + number2;
ListNode l3 = new ListNode(sum%10);
ListNode l4 = l3;
while(sum!=0)
{
sum=sum/10;
if (sum!=0)
{
l3.next = new ListNode(sum%10);
l3=l3.next;
}
}
return l4;
}
}
【问题讨论】:
-
好的,但是你的问题是什么?
-
你能提供更多细节吗?
-
这真的不是解决这个问题的正确方法。
-
给了我两个ListNode(实现如下),像单链表一样,每个都包含相反顺序的数字。我必须通过按实际顺序使用它们来添加两个列表节点中的两个数字。我的代码适用于除一个之外的所有测试用例。输入:[9] [1,9,9,9,9,9,9,9,9,9] 输出:[0,-4,-6,-3,-8,-4,-7,- 4,-1,-2] 预期:[0,0,0,0,0,0,0,0,0,0,1]
标签: java algorithm data-structures