你可以使用递归来实现排列函数。以下是一个使用 JavaScript 编写的排列函数:

function permute(nums) {
  const result = [];
  
  function backtrack(nums, path) {
    if (path.length === nums.length) {
      result.push(path.slice());
      return;
    }
    
    for (let i = 0; i < nums.length; i++) {
      if (path.includes(nums[i])) {
        continue;
      }
      
      path.push(nums[i]);
      backtrack(nums, path);
      path.pop();
    }
  }
  
  backtrack(nums, []);
  return result;
}

console.log(permute([1, 2, 3]));

这个函数中,backtrack 函数是核心递归函数,用于生成所有可能的排列。它通过 path 参数记录当前已经选择的元素,当 path 的长度等于输入数组 nums 的长度时,将 path 添加到结果数组 result 中。否则,遍历 nums 数组,如果当前元素已经在 path 中,就跳过;否则,将当前元素添加到 path 中,然后递归调用 backtrack 函数,再将当前元素从 path 中移除。

最后,调用 permute 函数并传入输入数组 [1, 2, 3],即可得到所有排列的情况。结果为 [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]


原文地址: https://www.cveoy.top/t/topic/pD9b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录