题解 | #有重复项数字的全排列#
有重复项数字的全排列
https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863
#include <algorithm> #include <vector> class Solution { private: vector<vector<int>> res; vector<int> path; public: void backTrack(vector<int>& num, vector<bool>& used) { if (path.size() == num.size()) { res.push_back(path); return; } for (int i = 0; i < num.size(); i++) { if (used[i]) { continue; } if (i > 0 && num[i] == num[i - 1] && !used[i - 1]) { continue; } used[i] = true; path.push_back(num[i]); backTrack(num, used); used[i] = false; path.pop_back(); } } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型vector * @return int整型vector<vector<>> */ vector<vector<int> > permuteUnique(vector<int>& num) { // write code here vector<bool> used(num.size(), false); std::sort(num.begin(), num.end()); backTrack(num, used); return res; } };
在线编程练习 文章被收录于专栏
C++在线编程练习题解