vector<vector<int> > permuteUnique(vector<int> &num) {
vector<vector<int>> permutations;
if (num.size() <= 1)
{
permutations.push_back(num);
return permutations;
}
sort(num.begin(), num.end());
int lastNum = num.back();
num.pop_back();
vector<vector<int>> permutationsWithoutLastNum = permuteUnique(num);
for (int i = 0; i < permutationsWithoutLastNum.size(); i++)
{
vector<int> permutationWithoutLastNum = permutationsWithoutLastNum[i];
int lastSame = permutationWithoutLastNum.size()-1;
for (; lastSame >= 0; lastSame--)
{
if (permutationWithoutLastNum[lastSame] == lastNum)
{
break;
}
}
for (int j = lastSame+1; j < permutationWithoutLastNum.size(); j++)
{
vector<int> permutation = permutationWithoutLastNum;
//if (permutation[j] != lastNum)
{
permutation.insert(permutation.begin()+j, lastNum);
permutations.push_back(permutation);
}
}
vector<int> permutation = permutationWithoutLastNum;
permutation.push_back(lastNum);
permutations.push_back(permutation);
}
return permutations;
}
[LeetCode] Permutations II
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.