【发布时间】:2019-10-14 18:46:11
【问题描述】:
我得到了两个代表两个非负整数的非空链表。数字以相反的顺序存储,每个节点包含一个数字。任务是将两个数字相加并将其作为链表返回。
- 输入:
(2 -> 4 -> 3) + (5 -> 6 -> 4) - 输出:
7 -> 0 -> 8 - 解释:
342 + 465 = 807
这个问题有几种解决方案。我试图通过将链表形成的数字转换为数字来解决它。我已经将列表转换为数字,但我的问题从这里开始。你得到了一个链表定义,你不能破坏它。此定义中没有默认(空)构造函数。我还不能将我的整数和转换为链表形式。这是我的代码:
public class ListNode { //given linked -list definition. Should not be manipulated.
int val;
ListNode next;
ListNode(int x) { val = x; }
}
import java.util.*;
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int num1 = getNumber(l1);
int num2 = getNumber(l2);
int sum = num1 + num2;
return ?? //some how I should return a LinkedList where my sum is converted into it
}
//getNumber converts given linked-lists into integers
public int getNumber(ListNode head) {
ListNode tmp = head;
int number = 0;
int pass = 0;
while(tmp != null) {
number += tmp.val * Math.pow(10, pass) ;
tmp = tmp.next;
pass++;
}
return number;
}
【问题讨论】:
-
你想把 7->0->8 放到一个新的 LinkedList 中吗?你可以创建一个新的 LinkedList 吗?您正在返回一个 ListNode 变量,它只能包含一个值
标签: java linked-list