原题链接:https://leetcode.com/problems/permutations/
思路是用dfs,依次找出每一层递归中符合条件的数字添加到curList中去。
直到curList.size()==nums.length;
我在这里用了一个Boolean数组来判断此数字是否在这次深度dfs中出现过。
AC 2ms beats 99% java:
class Solution {
List<List<Integer>> list=new ArrayList();
public List<List<Integer>> permute(int[] nums) {
boolean[] flag=new boolean[nums.length];
helper(nums,flag,new ArrayList<Integer>());
return list;
}
public void helper(int[] nums,boolean[] flag, List<Integer> curList){
if(curList.size()==nums.length){
list.add(new ArrayList(curList));
return;
}
for(int i=0;i<nums.length;i++){
if(!flag[i]){
flag[i]=true;
curList.add(nums[i]);
helper(nums,flag,curList);
curList.remove(curList.size()-1);
flag[i]=false;
}
}
}
}