您的位置:首页 > 其它

LeetCode: Permutations II

2014-08-30 13:51 316 查看
思路:和一般的排列一样,不过在存入结果时,先检查一下是否已经存在这个结果了。

code:

class Solution {
public:
void solvePermute(vector<int> &num, int pos, vector<vector<int> > &ret){
if(pos == num.size()-1){
if(find(ret.begin(),ret.end(),num) == ret.end())
ret.push_back(num);
return;
}
//solvePermute(num,pos+1,ret);
for(int i = pos;i< num.size();i++){
if(i != pos && num[i] == num[i-1])
continue;
vector<int> temp = num;
int s = temp[pos];
temp[pos] = temp[i];
temp[i] = s;
solvePermute(temp,pos+1,ret);
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(),num.end());
vector<vector<int> > ret;
vector<int> curRet;
int n = num.size();
solvePermute(num,0,ret);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: