LeetCode刷题笔录Permutations II
2014-08-21 08:55
225 查看
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
and
这题和Permutations差不多。不同的就是要处理一下duplicate的情况。可以先给数组排个序,然后再选择元素的时候在所有相同的元素里只选择一个。比如11223就选第二个1和第二个2.
For example,
[1,1,2]have the following unique permutations:
[1,1,2],
[1,2,1],
and
[2,1,1].
这题和Permutations差不多。不同的就是要处理一下duplicate的情况。可以先给数组排个序,然后再选择元素的时候在所有相同的元素里只选择一个。比如11223就选第二个1和第二个2.
public class Solution { public List<List<Integer>> permuteUnique(int[] num) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(num == null || num.length == 0) return res; Arrays.sort(num); List<Integer> arr = new ArrayList<Integer>(); recursive(num, res, arr, new boolean[num.length]); return res; } public void recursive(int[] num, List<List<Integer>> res, List<Integer> arr, boolean[] used){ if(arr.size() == num.length){ res.add(new ArrayList<Integer>(arr)); return; } for(int i = 0; i < num.length; i++){ //skip the duplicates if(i > 0 && !used[i - 1] && num[i] == num[i - 1]) continue; if(!used[i]){ used[i] = true; arr.add(num[i]); recursive(num, res, arr, used); arr.remove(arr.size() - 1); used[i] = false; } } } }
相关文章推荐
- LeetCode刷题笔录Permutations II
- leetcode 47: Permutations II
- LeetCode-47-Permutations II 递归+dict
- [LeetCode] 47. Permutations II
- LeetCode刷题笔录N-Queens II
- LeetCode 47. Permutations II(生成不同的组合-dfs)
- LeetCode刷题笔录 Validate Binary Search Tree
- Leetcode 46. Permutations 47. Permutations II
- [leetcode] Permutations II
- LeetCode *** 47. Permutations II (Backtracking )
- [leetCode刷题笔记]47. Permutations II
- LeetCode刷题笔录Best Time to Buy and Sell Stock
- [LeetCode] Permutations II 排列
- leetcode-47. Permutations II
- LeetCode刷题笔录Remove Nth Node from End of List
- LeetCode刷题笔录Unique Paths II
- [leetcode] 47. Permutations II
- 【leetcode刷题笔记】Permutations II
- LeetCode - 47. Permutations II
- Leetcode | Permutations II