res.push(Array.of(...list))
其中res、list都为数组,那么上面这句话是不是等同于res.push(list)
在list不为空的情况下,如果也不存在Array.of(3)这种情况。
但是我用res.push(list)就出现问题。
完整代码如下:
function FindPath(root, num)
{
// write code here
var res=[];
var list=[];
return getPath(root,num,res,list);
}
function getPath(root,num,res,list){
if(root==null)return res;
list.push(root.val);
num=num-root.val;
if(root.left==null && root.rigth==null && num==0){
res.push(Array.of(...list));
}
if(root.left!=null) getPath(root.left,num,res,list);
if(root.right!=null) getPath(root.right,num,res,list);
list.pop();
return res;
}
这个题,逻辑都没什么问题,一直出错,看了别人的代码才发现是这个问题,但是我不太理解这部分.......
谢谢大家
参考GPT和自己的思路:
是的,Array.of(...list)等同于使用list数组的值作为参数创建一个新的数组,并将此新数组添加到res数组中。这样做的原因是因为Array.of可以创建一个具有任意数量的元素的新数组,而不需要担心参数的数量或类型。
使用res.push(list)则只是将list数组作为一个元素添加到res数组中,这样做会导致结果不正确。
在list不为空的情况下,不存在Array.of(3)这种情况是正确的,因为Array.of需要至少一个参数。如果list为空,则Array.of将创建一个只有一个元素的新数组,其值为undefined。
在你的代码中,使用res.push(Array.of(...list))将有效地创建一个包含list数组的所有元素的新数组,并将其添加到res数组中,从而实现将路径添加到结果中的目的。