Permutations II

    xiaoxiao2025-08-14  9

    Given a collection of numbers that might contain duplicates, return all possible unique permutations.

    For example, [1,1,2] have the following unique permutations:

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

    Subscribe to see which companies asked this question

    运用set来保证每一级不会有重复的,但完成某一级的时候需要clear

    static int m[100]; class Solution { public: void backtrack(vector<int>& nums,int t,vector<set<int>>&lim,vector<vector<int>>&ans, vector<int> temp) { if(t==nums.size()) { ans.push_back(temp); return ; } else { for(int i=0;i<nums.size();++i) { if(m[i]==0&&lim[t].find(nums[i])==lim[t].end()) { m[i]=1; { temp.push_back(nums[i]); lim[t].insert(nums[i]); backtrack(nums,t+1,lim,ans,temp); temp.pop_back(); m[i]=0; } } } lim[t].clear(); return ; } } vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> ans; vector<int> temp; vector<set<int>> lim(nums.size(),set<int>()); int t=0; for(int i=0;i<nums.size();++i) { if(lim[t].find(nums[i])==lim[t].end()) { m[i]=1; temp.push_back(nums[i]); lim[t].insert(nums[i]); backtrack(nums,t+1,lim,ans,temp); temp.pop_back(); m[i]=0; } } lim[t].clear(); return ans; } };
    转载请注明原文地址: https://ju.6miu.com/read-1301741.html
    最新回复(0)