lc47-Permutations II 發表於 2016-09-11 | 分類於 leetcode | 0 comments | 1234567891011121314151617181920212223242526272829303132333435class Solution {private: vector<int> sol; vector<vector<int>> ans; public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<int> marked(nums.size(), 0); sort(nums.begin(), nums.end()); permuteUnique_(nums, marked, 0); return ans; } void permuteUnique_(vector<int>& nums, vector<int>& marked, int level) { int prev_num; //printf("level=%d ", level); if (level >= nums.size()) { ans.push_back(sol); return; } for (int i = 0; i < nums.size(); i++) { if (marked[i]) continue; if (i > 0 && (nums[i] == prev_num)) continue; prev_num = nums[i]; sol.push_back(nums[i]); //cout<<sol.size(); marked[i] = 1; permuteUnique_(nums, marked, level + 1); sol.pop_back(); marked[i] = 0; } }};