java添加两个数字链表
我有一个关于使用LeetCode中的链表添加两个数字的问题。 下面是问题本身、我面临的问题以及我的代码
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contains a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807.
问题是它打印出:
Error:
A: 7
B: 7
C: 7
A: 10
B: 0
Exception in thread "main" java.lang.NullPointerException
at Solution.addTwoNumbers(MainClass.java:61)
at MainClass.main(MainClass.java:123)
当结果出现时,它停止。val为0并调用NullPointerException。我不太理解这一部分,因为我认为在Java中,值0与NullPointerException不同。有人能帮我吗?多谢各位
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
int up = 0;
ListNode num1 = l1, num2 = l2;
while (num1 != null || num2 != null){
int sum = 0;
int prevUp = 0;
if (num1 != null && num2 == null){
sum = num1.val + up;
if (sum >= 10){
up = 1;
sum = sum - 10;
}
num1 = num1.next;
result.val = sum;
result = result.next;
}
else if (num2 != null && num1 == null){
sum = num2.val + up;
if (sum >= 10){
up = 1;
sum = sum - 10;
}
num2 = num2.next;
result.val = sum;
result = result.next;
}
else{
sum = num1.val + num2.val;
System.out.println("A: "+ sum);
if (sum >= 10){
prevUp = up;
up = 1;
sum = sum - 10;
}
System.out.println("B: " + sum);
num1 = num1.next;
num2 = num2.next;
result.val = sum + prevUp;
System.out.println("C: " + result.val);
result = result.next;
}
}
return result;
}
# 1 楼答案
在这里,您可以使用引用变量来遍历LinkedList
# 2 楼答案
由于result=result的原因,它正在抛出Null指针异常。next,而result只有一个节点,您已初始化为 result=new listNode(0)
# 3 楼答案
它之所以给出NullPointerException是因为您只定义了一个节点的结果列表
当你发现
result.next == null
时,你更喜欢向它添加新节点