LeetCode-Permutations II
2014-08-15 12:23
288 查看
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
and
Solution:
Code:
<span style="font-size:14px;">class Solution {
public:
bool valid(vector<int> &num, int begin, int end) {
for (int i = begin; i < end; ++i)
if (num[i] == num[end]) return false;
return true;
}
void helper(vector<vector<int> > &results, vector<int> &num, const int &length, int index) {
if (index == length) {
results.push_back(num);
return;
}
helper(results, num, length, index+1);
for (int i = index+1; i < length; ++i)
if (valid(num, index, i)) {
swap(num[index], num[i]);
helper(results, num, length, index+1);
swap(num[index], num[i]);
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
vector<vector<int> > results;
const int length = num.size();
if (length == 0) return results;
if (length == 1) {
results.push_back(num);
return results;
}
sort(num.begin(), num.end());
helper(results, num, length, 0);
return results;
}
};</span>
For example,
[1,1,2]have the following unique permutations:
[1,1,2],
[1,2,1],
and
[2,1,1].
Solution:
Code:
<span style="font-size:14px;">class Solution {
public:
bool valid(vector<int> &num, int begin, int end) {
for (int i = begin; i < end; ++i)
if (num[i] == num[end]) return false;
return true;
}
void helper(vector<vector<int> > &results, vector<int> &num, const int &length, int index) {
if (index == length) {
results.push_back(num);
return;
}
helper(results, num, length, index+1);
for (int i = index+1; i < length; ++i)
if (valid(num, index, i)) {
swap(num[index], num[i]);
helper(results, num, length, index+1);
swap(num[index], num[i]);
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
vector<vector<int> > results;
const int length = num.size();
if (length == 0) return results;
if (length == 1) {
results.push_back(num);
return results;
}
sort(num.begin(), num.end());
helper(results, num, length, 0);
return results;
}
};</span>
相关文章推荐
- Leetcode 47 Permutations II
- LeetCode刷题笔录Permutations II
- LeetCode:Permutations, Permutations II(求全排列)
- leetcode-Permutations II(2014.2.4)
- Leetcode 47 Permutations II
- leetcode 47: Permutations II
- [LeetCode] 47. Permutations II
- Leetcode:Permutations与Permutations II
- LeetCode 47. Permutations II
- Leetcode 46. Permutations 47. Permutations II
- LeetCode::Permutations II
- [LeetCode]题解(python):047-Permutations II
- [LeetCode]47 Permutations II
- leetcode 047 Permutations II
- leetcode 47. Permutations II
- Java for LeetCode 047 Permutations II
- [LeetCode]Permutations II
- [leetcode] Permutations II
- Permutations II ——LeetCode
- LeetCode 047 Permutations II