题意理解
数组存在重复元素,求不重复的排列数
问题分析
其他
链接
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int>> res;
int len = nums.size();
sort (nums.begin(), nums.end()); //排序
backtrack (0, len, nums, res);
return res;
}
void backtrack (int i, int n, vector<int> nums, vector<vector<int>>& res) {
if (i == n - 1) {
res.push_back(nums);
return;
}
for (int j = i; j != n; j ++) {
if (j == i || nums[j] != nums[i]) { //不等,或当前元素,往后回溯
swap (nums[j], nums[i]);
backtrack (i + 1, n, nums, res);
//swap (nums[j], nums[i]); //交换回去必然重复,不考虑
}
}
}