全排列
1.题目
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
2.分析
使用dfs进行全排列,注意一定要回溯的时候移除之前的数!
3.代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   | class Solution {     private List<List<Integer>> ans = new ArrayList<>();     public List<List<Integer>> permute(int[] nums) {         List<Integer> temp = new ArrayList<>();         dfs(nums,temp);         return ans;     }     private void dfs(int[] nums,List<Integer> temp){         if(temp.size()==nums.length){             ans.add(new ArrayList<>(temp));             return;         }         for (int num : nums) {             if(!temp.contains(num)){                 temp.add(num);                 dfs(nums,temp);                 temp.remove(temp.size()-1);             }         }
      } }
  |