为什么此代码返回一个空数组?

问题描述 投票:0回答:2

问题:给定一组不同的整数,请返回所有可能的排列。

示例:输入:[1,2,3]

所需的输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] >

不是在JavaScript中通过引用传递数组吗?为什么返回结果数组为空?

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function(nums) {
  var result = [];
  helper(nums, result, []);
  return result;
};

var helper = function(nums, result, cur) {
  if (cur.length == nums.length) {
    result.push(cur);
  } else {
    for (let i = 0; i < nums.length; i++) {
      cur.push(nums[i]);
      helper(nums, result, cur);
      cur.pop();
    }
  }
}
console.log(permute([1, 2, 3]));

问题:给定一组不同的整数,请返回所有可能的排列。示例:输入:[1,2,3]所需的输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3, 1,2],[3,2,1]]未通过数组...

javascript algorithm recursion data-structures permutation
2个回答
2
投票

您仅在调用cur时才创建单个helper数组:


0
投票

不,JavaScript中的所有内容都是按值传递的。在函数helper中,将创建一个局部变量result,然后在helper调用时为其分配自变量的值。您最可能想做的是:result = helper(nums, result, []);

© www.soinside.com 2019 - 2024. All rights reserved.