LeetCode 47. Permutations II

xiaoxiao2021-02-28  151

题意

求一个含重复元素的序列的全排列

思路

根据求最小字典序的思路,对序列进行去重的同时进行交换 DFS 求得序列.

代码

class Solution { public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int> >ans; sort(nums.begin(), nums.end()); DFS(ans, nums, 0); return ans; } void DFS(vector<vector<int> >& ans, vector<int>& nums, int id){ if(id == nums.size()){ ans.push_back(nums); return ; } DFS(ans, nums, id + 1); for(int i = id + 1; i < nums.size(); i++){ int j; for(j = id; j < i; j++){ if(nums[j] == nums[i]) break; } if(j < i) continue; swap(nums[i], nums[id]); DFS(ans, nums, id + 1); swap(nums[i], nums[id]); } } };
转载请注明原文地址: https://www.6miu.com/read-36810.html

最新回复(0)