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 发布
本文介绍了一个排列算法的具体实现过程,通过递归方式生成整数数组的所有可能排列组合,并详细展示了如何避免重复元素,确保每个排列的独特性。
489

被折叠的 条评论
为什么被折叠?



