public class Solution {
/*
* @param nums: A list of integers.
* @return: A list of permutations.
*/
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
Set<Integer> set = new HashSet<>();
helper(nums,result,set,new ArrayList<>());
return result;
}
void helper(int[] nums,List<List<Integer>> result,Set<Integer> used,List<Integer> each){
for(int i=0;i<nums.length;i++){
if(!used.contains(nums[i])){
each.add(nums[i]);
used.add(nums[i]);//当前点已经使用
helper(nums,result,used,each);
used.remove(nums[i]);
each.remove(each.size() - 1);
}
}
if(each.size() == nums.length){
List<Integer> temp = new ArrayList<>();
temp.addAll(each);
result.add(temp);
}
}
}
[LintCode] 15. Permutations
最新推荐文章于 2021-02-04 19:40:10 发布