## 题目地址 https://leetcode-cn.com/problems/permutations-ii/ ## 思路 i > 0 && nums[i] == nums[i-1] && used[i-1] == false 这是最高效的,可以用 1 1 1 1 1 跑一个样例试试 ## C++代码 ``` class Solution { private: vector> result; void backtracking (vector& nums, vector& vec, vector& used) { // 此时说明找到了一组 if (vec.size() == nums.size()) { result.push_back(vec); return; } for (int i = 0; i < nums.size(); i++) { if (i > 0 && nums[i] == nums[i-1] && used[i-1] == false) { continue; } if (used[i] == false) { used[i] = true; vec.push_back(nums[i]); backtracking(nums, vec, used); vec.pop_back(); used[i] = false; } } } public: vector> permuteUnique(vector& nums) { sort(nums.begin(), nums.end()); vector used(nums.size(), false); vector vec; backtracking(nums, vec, used); return result; } }; ```