您的位置:首页 > 其它

[Leetcode] Permutations II

2012-12-15 10:22 344 查看
class Solution {
private:
vector<vector<int> > res;
map<vector<int>, int> mp;

public:
vector<vector<int> > permuteUnique(vector<int> &num)
{
// Start typing your C/C++ solution below
// DO NOT write int main() function
res.clear();
mp.clear();

permute(num, 0, num.size());

return res;
}

void permute(vector<int> buf, int idx, int num)
{
if (idx == num)
{
if (mp.find(buf) == mp.end())
{
res.push_back(buf);
mp[buf] = 1;
}
}

for (int i = idx; i < num; ++i)
{
swap(buf[idx], buf[i]);
permute(buf, idx + 1, num);
swap(buf[idx], buf[i]);
}
}

void swap(int& a, int& b)
{
if (a == b)
return;

a = a ^ b;
b = a ^ b;
a = a ^ b;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: