可以使用递归的方式来实现排列函数。具体实现如下:

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

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

这里使用了一个 backtrack 函数来进行递归。当 tempList 的长度等于 nums 的长度时,表示已经得到一个排列结果,将其加入到 result 数组中。否则,遍历 nums 数组,如果当前元素已经在 tempList 中,则跳过;否则,将当前元素添加到 tempList 中,继续递归调用 backtrack 函数;递归调用结束后,将 tempList 中最后一个元素弹出,继续下一个循环。

最后返回 result 数组即可

使用 js 编写一个排列函数输入一个数组返回这个数组所有排列的情况 比如传入123 返回 1221123132213231312321

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

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