首页 > 其他分享 >90. 子集 II

90. 子集 II

时间:2023-04-15 13:12:44浏览次数:39  
标签:used nums res II vector 子集 path 90

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

> 我的解法

class Solution {
private:
    void traversal(vector<int> &nums,vector<bool> &used,int startdex){
        if(startdex > nums.size()) return;
        res.emplace_back(path);
        for(int i = startdex;i < nums.size(); i++){
            if(i > 0 && nums[i - 1] == nums[i] && used[i - 1] == false) continue;
            path.emplace_back(nums[i]);
            used[i] = true;
            traversal(nums,used,i+1);
            used[i] = false;
            path.pop_back();
        }
    }
public:
    vector<vector<int>> res;
    vector<int> path;
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        vector<bool> used(nums.size(),false);
        res.clear();
        path.clear();
        used.clear();
        std::sort(nums.begin(),nums.end());
        traversal(nums,used,0);
        return res;
    }
};

标签:used,nums,res,II,vector,子集,path,90
From: https://www.cnblogs.com/lihaoxiang/p/17320922.html

相关文章

  • 78. 子集
    给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。>我的解法classSolution{private:voidfind_son_depth(vector<int>&nums,intindex,intd,intdepth){if(d>depth......
  • (动态规划)剑指 Offer 14- II. 剪绳子 II
    题目描述:给你一根长度为n的绳子,请把绳子剪成整数长度的m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案......
  • U290226 公式推导
    U290226求\(\sum_{x=1}^{n}x^m\)的公式,\(n\leq20\)。先看如下柿子:\[1+2+3+\cdots+n=\frac{n\times(n+1)}{2}=\frac{n^2}{2}+\frac{n}{2}\]\[1^2+2^2+3^2+\cdots+n^2=\frac{n\times(n+1)\times(2n+1)}{6}=\frac{n^3}{......
  • 40. 组合总和 II
    给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。classSolution{private:voidtraversal(vector<int>&candidates,......
  • winform-C#操作IIS_DirectoryEntry
    1、创建对象:DirectoryEntryrootfolder=newDirectoryEntry("IIS://localhost/W3SVC/1/ROOT"); //IIS://服务器的名字/要操作的Web服务器类型/站点/站点的虚拟目录 2、修改对象: 3、删除对象: 参考:   C#创建虚拟目录  C#使用DirectoryEntry操作IIS创建网站......
  • Codeforces Round #290 (Div. 2) 解题报告 A.B.C.D.
    A-FoxAndSnake模拟。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include<stdio.h>usingnames......
  • POJ 1905 Expanding Rods (二分+计算几何+精度处理)
    题目地址:POJ1905用二分枚举h,然后判断弧长是否符合条件。重点还是在精度问题上,具体看代码吧。。#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include......
  • leetcode:路径总和 III
    问题描述给定一个二叉树的根节点root ,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1输入:root=[10,5,-3,3,2,null,11,3,-2,null,1],ta......
  • SPOJ 1825 FTOUR2 - Free tour II (树上点分治)
    题目地址:SPOJ1825树分治的题果然除了模板题就是金牌题啊。。。这题是一道论文题,想了好长时间。。。。终于过了,,,,注意一个坑点,如果权值全部为负的话,是可以不选任意一条边的,这样权值为0。。。也就是说初始值要设为0。。。具体看漆子超的论文《分治算法在树的路径问题中的应用》......
  • HDU 5016 Mart Master II (树上点分治)
    题目地址:HDU5016先两遍DFS预处理出每个点距最近的基站的距离与基站的编号。然后找重心,求出每个点距重心的距离,然后根据dis[x]+dis[y]<d[y],用二分找出当前子树中不会被占领的数量,总点数减去即是被占领的数量。这样就可以求出每个点最多占领的点的数量。然后找最大值即可。......