class Solution {
public List<List<Integer>> permuteUnique(int[] nums) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
helper(nums, 0, ans, new ArrayList<Integer>());
return ans;
}
private void helper(int[] nums, int idx, List<List<Integer>> ans, ArrayList<Integer> path){
if(idx == nums.length) {
ans.add(new ArrayList<Integer>(path));
return;
}
Set<Integer> selected = new HashSet<Integer>();
for(int i = idx; i < nums.length; i++){
if(selected.contains(nums[i])) continue;
path.add(nums[i]);
selected.add(nums[i]);
swap(nums, i, idx);
helper(nums, idx+1, ans, path);
swap(nums, i, idx);
path.remove(path.size()-1);
}
return;
}
private void swap(int[] nums, int a, int b){
int tmp = nums[a];
nums[a] = nums[b];
nums[b] = tmp;
}
}
47 permutation II(with duplicate)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 217. Contains Duplicate https://leetcode.com/problems/con...
- Given an array of integers and an integer k, find out whe...
- 原题链接:Contains Duplicate II这题的答案是我在leetcode官方论坛上找的,我自己写的代码...
- You may find that screen resolution is not same as parent...