#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<vector<int>> ans;
vector<int> temp;
void backtrack(vector<int>& nums, vector<bool>& used){
if (temp.size()==nums.size()){
ans.emplace_back(temp);
return ;
}
for (int i=0; i<nums.size(); i++){
if (i>0 && nums[i]==nums[i-1] && used[i-1]==false){
continue;
}
if (used[i]==false){
used[i]=true;
temp.emplace_back(nums[i]);
backtrack(nums, used);
temp.pop_back();
used[i]=false;
}
}
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<bool> used(nums.size(), false);
sort(nums.begin(), nums.end());
backtrack(nums, used);
return ans;
}
};
int main(){
vector<int> myvector = {1, 1, 4,3};
vector<vector<int>> ans;
Solution S;
ans=S.permuteUnique(myvector);
for (auto arr:ans){
for (auto element:arr){
cout<<element<<" ";
}
cout<<endl;
}
return 0;
}
结果:
1 1 3 4
1 1 4 3
1 3 1 4
1 3 4 1
1 4 1 3
1 4 3 1
3 1 1 4
3 1 4 1
3 4 1 1
4 1 1 3
4 1 3 1
4 3 1 1
Leetcode47. 全排列 II
最新推荐文章于 2024-04-12 12:18:13 发布