跳转至

47.全排列 II (Medium)*

题目描述*

给定一个可包含重复数字的序列,返回所有不重复的全排列。

示例*

输入: [1,1,2]

输出:

[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]

代码*

添加去重的步骤:

class Solution {
private:
    vector<vector<int>> res;
public:
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        backtrack(nums, 0);
        return res;
    }
    void backtrack(vector<int> nums, int i) {
        if(i == nums.size() - 1) {
            res.push_back(nums);
            return;
        }
        for(int j = i; j < nums.size(); j++) {
            if(i != j && nums[i] == nums[j]) {
                continue;
            }
            swap(nums[i], nums[j]);
            backtrack(nums, i + 1);
        }
    }
};

最后更新: July 23, 2022