47. 全排列 II
1 class Solution 2 { 3 vector<vector<int>> ans; 4 vector<int> temp; 5 vector<bool> st; 6 public: 7 vector<vector<int>> permuteUnique(vector<int>& nums) 8 { 9 st = vector<bool>(nums.size(),false); 10 sort(nums.begin(),nums.end()); 11 dfs(nums,0); 12 return ans; 13 } 14 15 void dfs(vector<int>& nums,int cur) 16 { 17 if(cur == nums.size()) 18 { 19 ans.push_back(temp); 20 return; 21 } 22 23 //注意i = 0而不是为cur 24 for(int i = 0;i < nums.size();i ++) 25 { 26 if(!st[i]) 27 { 28 //如果这个数和之前的数一样,并且之前的数还未使用过 29 if(i != 0 && nums[i] == nums[i - 1] && !st[i - 1]) continue; 30 31 st[i] = true; 32 temp.push_back(nums[i]); 33 dfs(nums,cur + 1); 34 35 temp.pop_back(); 36 st[i] = false; 37 } 38 } 39 } 40 };
Mamba never out

浙公网安备 33010602011771号