题目

image.png
image.png

题解

这道题可以使用dfs+回溯

  1. /**
  2. * @param {number[]} nums
  3. * @return {number[][]}
  4. */
  5. var permute = function(nums) {
  6. // 结果
  7. const res = [];
  8. // 初始值
  9. let level = 0;
  10. // 数组交换位置
  11. const warp = (l, r) => {
  12. [nums[l], nums[r]] = [nums[r], nums[l]]
  13. }
  14. // dfs+回溯
  15. const backtracking = (level) => {
  16. // 递归出口
  17. if(level == nums.length - 1) {
  18. res.push([...nums]);
  19. return;
  20. }
  21. // 遍历
  22. // i = level 需要想想
  23. for(let i = level; i < nums.length; i++) {
  24. warp(i, level); // 交换位置
  25. backtracking(level+1); // 递归
  26. warp(i, level) // 恢复
  27. }
  28. }
  29. backtracking(level)
  30. return res;
  31. };