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

leet code78. 子集 && 90. 子集 II

时间:2023-11-18 23:32:58浏览次数:45  
标签:leet nums List dfs II 子集 ans local

78. 子集 90. 子集 II

78.题目描述

给你一个整数数组 nums ,数组中的元素 互不相同 。

返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。

你可以按 任意顺序 返回解集。

示例 1:

输入:nums = [1,2,3]

输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]

输出:[[],[0]]

提示:
● 1 <= nums.length <= 10
● -10 <= nums[i] <= 10
● nums 中的所有元素 互不相同

90.题目描述

给你一个整数数组 nums ,

其中可能包含重复元素,

请你返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。

返回的解集中,子集可以按 任意顺序 排列。

示例 1:

输入:nums = [1,2,2]

输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

示例 2:

输入:nums = [0]

输出:[[],[0]]

提示:
● 1 <= nums.length <= 10
● -10 <= nums[i] <= 10

题目解析

  • 两道题目有异曲同工之妙
  • 第 90 题的难点在于如何去重
  • 代码上的区别在于多一个去重判断即可

78.code

class Solution {

    private List<List<Integer>> ans;

    private int[] nums;

    public List<List<Integer>> subsets(int[] nums) {
        ans = new ArrayList<>();
        this.nums = nums;

        List<Integer> local = new ArrayList<>();
        dfs(local, 0);

        return ans;
    }

    private void dfs(List<Integer> local, int i) {
        if(i == nums.length) {
            ans.add(new ArrayList<>(local));
            return;
        }

        local.add(nums[i]);
        dfs(local, i + 1);
        local.remove(local.size() - 1);

        dfs(local, i + 1);
    }

}

90.code

class Solution {

    private List<List<Integer>> ans;

    private int[] nums;

    public List<List<Integer>> subsetsWithDup(int[] nums) {
        ans = new ArrayList<>();
        this.nums = nums;

        List<Integer> local = new ArrayList<>();
        Arrays.sort(nums);
        // false 代表没有选择上一个数字
        dfs(local, 0, false);

        return ans;
    }

    private void dfs(List<Integer> local, int i, boolean flag) {
        if(i == nums.length) {
            ans.add(new ArrayList<>(local));
            return;
        }

        // 不选择当前数字
        dfs(local, i + 1, false);

        // 如果当前数字和前一个数字相同,且前一个数字没有被选择,直接跳过
        if(!flag && i > 0 && nums[i] == nums[i - 1]) {
            return;
        }

        local.add(nums[i]);
        dfs(local, i + 1, true);
        local.remove(local.size() - 1);
    }

}

标签:leet,nums,List,dfs,II,子集,ans,local
From: https://blog.51cto.com/u_16079703/8465544

相关文章

  • P3412 仓鼠找sugar II 题解
    P3412仓鼠找sugarII题解大水题一个题目大意给定你一个树,设\(f_{u,v}\)表示在树上随机游走的情况下从\(u\)走到\(v\)的期望步数,求\(\displaystyle\frac{\sum_{i=1}^n\sum_{j=1}^nf_{i,j}}{n^2}\)。题解不难想到dp,不过\(1e5\)的范围差点让我怀疑我\(O(n......
  • LIIF笔记
    20231106链接:2012.09161.pdf(arxiv.org)1.为了解决什么问题?现实视觉世界是连续的,但是我们存放在计算机中的图像却是以离散的二维像素阵列存在。如果我们想训练一个卷积神经网路,我们通常需要将图像调整到相同的大小,这样会牺牲保真度。2.现有方法瓶颈现有的隐式神经表征在3D重......
  • 代码随想录算法训练营第七天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和
    今日学习的文章链接和视频链接https://programmercarl.com/链表理论基础.html●454.四数相加IIvarfourSumCount=function(nums1,nums2,nums3,nums4){letcount=0letmap=newMap();for(letnumber1ofnums1){for(letnumber2ofnums......
  • 【11月LeetCode组队打卡】Task2--String & StringMatch
    在CSP里面好多道“水题“基本都离不开字符串/数组的模拟滚动哈希,字典树,DP几个强强联合基本可以横扫所有难度的字符串算法了,所以在这个task里会好好消化其中前二字符串和数组有很多相似之处,比如同样使用下标的方式来访问单个字符。根据字符串的特点,将字符串问题分为以下几种:字......
  • 【小沐学Python】Web服务器搭建(Nginx、IIS)
    1、Web服务器web服务器一词可以代指硬件或软件,或者是它们协同工作的整体。6、NginxNginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器,多用于高连接并发。6.1简介https://nginx.org/en/Nginx是lgorSysoev为俄罗斯......
  • 【DP】Leetcode 322 Coin Change
    题目链接322.零钱兑换思路因为硬币数量是无限的,所以无法以硬币数量作为状态进行遍历代码classSolution{publicintcoinChange(int[]coins,intamount){intn=coins.length;if(n==0){return-1;}//dp[i]......
  • IIS服务器多站点多域名同时部署多个不同SSL证书HTTPS实现方法 当一个https的请求到达I
    IIS服务器多站点多域名同时部署多个不同SSL证书HTTPS实现方法当一个https的请求到达IIS服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加......
  • 深入浅出 Linux 中的 ARM IOMMU SMMU II
    SMMU驱动中的系统I/O设备探测要使系统I/O设备的DMA内存访问能通过IOMMU,需要将系统I/O设备和IOMMU设备绑定起来,也就是执行SMMU驱动中的系统I/O设备探测。总线发现系统I/O设备并和对应的驱动程序绑定,与IOMMU设备驱动程序注册并为IOMMU设备执行探测初始化的相......
  • 安装 IIS 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
    在windows中使用命令行方式安装IIS(Web服务器)WindowsServer2022安装IIS报错访问临时文件夹C:\WINDOWS\TEMP\3C读取/写入权限错误:0x80070005,可以使用命令行方式来安装和配置Web服务(IIS)。以下是使用DeploymentImageServicingandManagement(DISM)工具的步骤:1.打......
  • IIS中SSL证书过期更新的问题
    小程序访问后端接口报超时错: 查看证书已过期,如下:更新证书步骤如下:云服务器上下载最新有效期内证书: 下载下来的是压缩包,里面包含一个证书文件*.pfx和一个密钥文件*.txt,复制到服务器上备用。打开IIS服务管理器,点击计算机名称,双击‘服务器证书’ 双击打开服务器证书后......