您的位置:首页 > 其它

Permutations II

2013-10-17 02:03 218 查看
Code:

class Solution {
public:
int maxDep;
vector<int>buf;
vector<vector<int>> res;
void dfs(int dep, vector<bool> &valid, vector<int> &num){
if(dep==maxDep){
res.push_back(buf);
return;
}
for(int i=0;i<maxDep;i++)
{
if(i!=0&&valid[i-1]&&num[i-1]==num[i])
continue;
if(valid[i]){
valid[i]=false;
buf.push_back(num[i]);
dfs(dep+1,valid,num);
valid[i]=true;
buf.pop_back();
}
}
}
vector<vector<int>> permuteUnique(vector<int> &num) {
buf.clear();
res.clear();
if(num.empty()) return res;
sort(num.begin(),num.end()); // sort
vector<bool> valid(num.size(),true);
maxDep = num.size();
dfs(0,valid, num);
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: