0
点赞
收藏
分享

微信扫一扫

LeetCode---47.全排列II(固定某位元素时,保证“每种元素只在此位固定一次”,即遇到重复元素时不交换,直接跳过)


思路展示

为了排除这些重复方案,需在固定某位元素时,保证“每种元素只在此位固定一次”,即遇到重复元素时不交换,直接跳过,从而将生成重复排列的搜索分支进行“剪枝”

LeetCode---47.全排列II(固定某位元素时,保证“每种元素只在此位固定一次”,即遇到重复元素时不交换,直接跳过)_算法

示例代码

class Solution {
public:
    vector<vector<int>> res;
    int len;
    void dfs(vector<int>& nums,int pos){
        if(pos==len-1){
            res.push_back(nums);
            return;
        }
        set<int> st;
        for(int i=pos;i<len;i++){
            if(st.find(nums[i])!=st.end()){
                continue;
            }
            st.insert(nums[i]);
            swap(nums[i],nums[pos]);
            dfs(nums,pos+1);
            swap(nums[i],nums[pos]);
        }
    }
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        len=nums.size();
        dfs(nums,0);
        return res;

    }
};

效果展示

LeetCode---47.全排列II(固定某位元素时,保证“每种元素只在此位固定一次”,即遇到重复元素时不交换,直接跳过)_leetcode_02


举报

相关推荐

0 条评论