Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Leetcode添加两个数字Q:如何从数字创建linkedlist?_Javascript_Algorithm_Linked List - Fatal编程技术网

Javascript Leetcode添加两个数字Q:如何从数字创建linkedlist?

Javascript Leetcode添加两个数字Q:如何从数字创建linkedlist?,javascript,algorithm,linked-list,Javascript,Algorithm,Linked List,在这个问题中,我已经知道了如何获得数字的总和(即807),但现在我需要将该数字转换为一个链表(例如7->0->8) 如何从数字创建linkedlist 创建列表节点的类函数: function ListNode(val) { this.val = val; this.next = null; } 我的代码的其余部分: var addTwoNumbers = function(l1, l2) { function findVal(linkedList) {

在这个问题中,我已经知道了如何获得数字的总和(即807),但现在我需要将该数字转换为一个链表(例如7->0->8)

如何从数字创建linkedlist

创建列表节点的类函数:

function ListNode(val) {
   this.val = val;
   this.next = null;
}
我的代码的其余部分:

var addTwoNumbers = function(l1, l2) {

    function findVal(linkedList) {
          return linkedList.next == null ? linkedList.val.toString() : linkedList.val.toString() + findVal(linkedList.next);

    }

    var l1num = parseInt(findVal(l1).split('').reverse().join(''));
    var l2num = parseInt(findVal(l2).split('').reverse().join(''));
    var sum = l1num + l2num;

// Create linked list from sum

如果将数字转换为数组,则可以使用
array.prototype.reduce
函数

let number=807;
函数列表节点(val){
this.val=val;
this.next=null;
}
//将数字转换为字符串并将其拆分为数字数组
设arr=Array.from(number.toString());
//迭代元素,并创建节点
让head=arr.reduce((下一个节点,当前)=>{
let node=新列表节点(curr);
node.next=nextNode;
返回节点;
},空);
//打印出数值
让节点=头部;
while(节点){
console.log(node.val);
node=node.next

}
如果将数字转换为数组,则可以使用
array.prototype.reduce
功能

let number=807;
函数列表节点(val){
this.val=val;
this.next=null;
}
//将数字转换为字符串并将其拆分为数字数组
设arr=Array.from(number.toString());
//迭代元素,并创建节点
让head=arr.reduce((下一个节点,当前)=>{
let node=新列表节点(curr);
node.next=nextNode;
返回节点;
},空);
//打印出数值
让节点=头部;
while(节点){
console.log(node.val);
node=node.next
}
递归更容易:

f=n=>n?{val:n%10,next:f(n/10 | 0)}:null
console.log(f(807))
使用递归更容易:

f=n=>n?{val:n%10,next:f(n/10 | 0)}:null


log(f(807))
您真的不应该需要
切片(1)
。只需传递
null
作为初始值,并使用
reduceRight
@user184994,几乎可以。LL的顺序应该是相反的。从一开始,然后是十,一百。。。因此,只要将
reduceRight
更改回a
reduce
就可以了;)@Thomas噢,我没有注意到OP需要向后列出。@Bergi这在您最近编辑后不再有效-
head
未定义。你需要调用
newlistnode
而不是
ListNode
@user184994哎哟,我不是要删除
new
。感谢您的测试:-)您真的不应该需要
切片(1)
。只需传递
null
作为初始值,并使用
reduceRight
@user184994,几乎可以。LL的顺序应该是相反的。从一开始,然后是十,一百。。。因此,只要将
reduceRight
更改回a
reduce
就可以了;)@Thomas噢,我没有注意到OP需要向后列出。@Bergi这在您最近编辑后不再有效-
head
未定义。你需要调用
newlistnode
而不是
ListNode
@user184994哎哟,我不是要删除
new
。感谢您的测试:-)所有字母代表什么?
f=n=>n
是函数f(n){return n}的缩写,我使用了
a
b
而不是
l1
l2
参数
c
只是一个临时变量,用于在两位数字之和大于9时获取结转
+1
。你可以看到关于
n/10 | 0
如何工作的翻译版本?我只是安慰了一下
807/10 | 0
,它给了我
80
,但我不知道这是怎么回事worked@cryptofish123这是将浮点数转换为整数的快捷方式之一。很抱歉把代码弄得这么神秘。。我想要的是“Leet”代码:你能解释一下
c>9
是如何工作的吗?在第三次迭代中
c=10
。我假设您只想将
1
带入下一个迭代?它是如何做到的?所有的字母代表什么?
f=n=>n
函数f(n){return n}
的缩写,我用
a
b
代替
l1
l2
参数
c
只是一个临时变量,用于在两位数字之和大于9时获取结转
+1
。你可以看到关于
n/10 | 0
如何工作的翻译版本?我只是安慰了一下
807/10 | 0
,它给了我
80
,但我不知道这是怎么回事worked@cryptofish123这是将浮点数转换为整数的快捷方式之一。很抱歉把代码弄得这么神秘。。我想要的是“Leet”代码:你能解释一下
c>9
是如何工作的吗?在第三次迭代中
c=10
。我假设您只想将
1
带入下一个迭代?它是如何做到这一点的?