本文共 1054 字,大约阅读时间需要 3 分钟。
给定一个可包含重复数字的序列,返回所有不重复的全排列
class Solution { public: vector> permuteUnique(vector & nums) { if(nums.size() == 0) return { }; sort(nums.begin(),nums.end()); vector > res; vector tmp; vector flag(nums.size(),0); DFS(res,tmp,flag,nums); return res; } void DFS(vector > &res,vector &tmp,vector &flag,vector nums){ if(tmp.size() == nums.size()){ res.push_back(tmp); } for(int i = 0;i < nums.size();i++){ if(flag[i] == 1 || (i>0 && flag[i-1] == 0 && nums[i] == nums[i-1])) continue; flag[i]=1; tmp.push_back(nums[i]); DFS(res,tmp,flag,nums); tmp.pop_back(); flag[i]=0;//不要忘了回溯的时候置回0 } }};
通过时间:
转载地址:http://bsemb.baihongyu.com/