請參考
https://www.geeksforgeeks.org/write-a-c-program-to-print-all-permutations-of-a-given-string/
以及 46題Permutations
這邊我只想的到用set去避免重複的可能
算是比較爛的解法
class Solution {
public:
void do_premute(vector<int> &nums, set<vector<int>> &res, int pos){
if(pos == nums.size() - 1){
res.insert(nums);
return;
}
for(int i = pos; i < nums.size();i++){
if(i != pos&& nums[i] == nums[pos]) continue;
swap(nums[i], nums[pos]);
do_premute(nums, res, pos + 1);
swap(nums[i], nums[pos]);
}
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
set<vector<int>> res;
do_premute(nums, res, 0);
vector<vector<int>> ans(res.begin(), res.end());
return ans;
}
};