Leetcode47全排列II

去重逻辑是
pop_back之后第一个1就用删除了,然后遍历第二个1,因为第二个1的搜索情况和第一个1完全一致,所以nums[i]==nums[i-1]并且由于第一个1访问完之后是False,加上第二个1尚未访问因此isVisit都是False,因此有isVisit[i-1]==0&&isVisit[i]==0

            if(i>=1&&nums[i]==nums[i-1]&&isVisit[i-1]==0&&isVisit[i]==0){
                continue;
            }

在这里插入图片描述

在这里插入图片描述

class Solution {
public:
    vector<bool> isVisit;
    vector<int> path;
    vector<vector<int>> paths;
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        isVisit=vector<bool>(nums.size()+10,0);
        dfs(nums);
        return paths;
    }
    void dfs(vector<int>& nums){
        if(path.size()==nums.size()){
            paths.push_back(path);
            return ;
        }

        for(int i=0;i<nums.size();++i){
            if(isVisit[i]){
                continue;
            }
            if(i>=1&&nums[i]==nums[i-1]&&isVisit[i-1]==0&&isVisit[i]==0){
                continue;
            }
            isVisit[i]=1;
            path.push_back(nums[i]);
            dfs(nums);
            path.pop_back();
            isVisit[i]=0;
        }
    }
};

相关推荐

  1. 47. 排列 II

    2024-04-09 15:00:08       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 15:00:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 15:00:08       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 15:00:08       82 阅读
  4. Python语言-面向对象

    2024-04-09 15:00:08       91 阅读

热门阅读

  1. 数据结构_基于顺序表的通讯录

    2024-04-09 15:00:08       30 阅读
  2. 计算机笔记(4)续20个

    2024-04-09 15:00:08       28 阅读
  3. 【Git】tag 标签用法

    2024-04-09 15:00:08       36 阅读
  4. npm指令

    2024-04-09 15:00:08       32 阅读
  5. 【WPF应用42】WPF中的 GroupBox 控件详解

    2024-04-09 15:00:08       38 阅读