leetcode90. 子集 II(java)

news2024/11/25 20:28:28

子集II

  • leetcode90. 子集 II
    • 题目描述
    • 解题思路
    • 代码演示
  • 回溯算法专题

leetcode90. 子集 II

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/subsets-ii

题目描述

给你一个整数数组 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

解题思路

这个和子集问题是一样的,都是回溯算法标准模式。子集问题参考leetcode78 子集 。和子集问题区别就是,这里有重复值的问题,我们要进行剪枝。
示例:
在这里插入图片描述
要对重复的值,进行剪枝操作,反应到代码里,就是我们先把数组排序,使其相等的数字相邻,然后回溯时,已经选过的,直接跳过去。

代码演示

class Solution {
    List<List<Integer>> ans = new LinkedList<>();
    LinkedList<Integer> track = new LinkedList<>();
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        Arrays.sort(nums);
        process(nums,0);
        return ans;
    }
	/**
	* 回溯算法
	*/
    public void process(int[]nums,int index){
        ans.add(new LinkedList<>(track));
        //选择列表,也就是决策列表
        for(int i = index;i < nums.length;i++){
        //剪枝操作,如果前面选择过了,就不选了 直接跳过
            if(i > index && nums[i] == nums[i - 1]){
                continue;
            }
            //选择
            track.addLast(nums[i]);
            process(nums,i + 1);
            //撤销选择
            track.removeLast();
        }
    }
}

回溯算法专题

leetcode78 子集

leetcode77. 组合

leetcode40. 组合总和 II

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/667860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

00后确实卷,公司新来的卷王,我们这帮老油条还真干不过.....

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了…

Java集合Map接口的实现类(HashMap、LinkedHashMap等面试题)的结构

HashMap /** 一、Map的实现类的结构&#xff1a;* |----Map:双列数据&#xff0c;存储key-value对的数据 ---类似于高中的函数&#xff1a;y f(x)* |----HashMap:作为Map的主要实现类&#xff1b;线程不安全的&#xff0c;效率高&#xff1b;存储null的key和value|…

AIGC之文本内容生成概述(上)

由于本文内容稍微长了一点点&#xff0c;所以分成了上下两篇文章来介绍&#xff0c;本文是上篇&#xff0c;下篇将会在后续发布。关于自然语言的生成方面&#xff0c;这一块的内容太多了&#xff0c;本文也只是穿针引线&#xff0c;帮大家理清学习路线而已&#xff0c;更多的内…

关于ROS/ROS2 bag包的名称修改问题

1 问题的提出 在ROS/ROS2中&#xff0c;ROS 的 bag包的名称通常会包含录制的具体时间&#xff1a;YYYY-MM-DD-小时-分钟-秒钟&#xff0c;但是这样可读性不强&#xff0c;而且过一段时间&#xff0c;就不知道这个包是关于什么内容的了。如果需要修改bag包的名称&#xff0c;该…

从0开始,手写MySQL事务

说在前面&#xff1a;从0开始&#xff0c;手写MySQL的学习价值 尼恩曾经指导过的一个7年经验小伙&#xff0c;凭借精通Mysql, 搞定月薪40K。 从0开始&#xff0c;手写一个MySQL的学习价值在于&#xff1a; 可以深入地理解MySQL的内部机制和原理&#xff0c;Mysql可谓是面试的…

渲染机制不仅在Android系设计到,Flutter中也有设计

前言 本文将介绍 Android 的渲染机制。主要是带着大家了解 Android 是如何绘制并显示一帧图像的&#xff0c;同时会涉及 Skia底层渲染的使用&#xff0c;以及关联到flutter的UI体系设计&#xff0c;感兴趣的可以在阅读的同时使用 Skia自己搭建一套flutter UI体系 进行尝试。在…

# Linux 学习记录37(C高级篇)

Linux 学习记录37(C高级篇) 本文目录 Linux 学习记录37(C高级篇)一、常见的shell解析器二、变量1. shell脚本外部传参2. 输入输出(1. 输出(2. 输入 3. 命令置换符4. shell中的数组 三、shell中的算数运算1. (())运算2. $[ ]运算3. let运算4. expr指令(1.数据运算(3. 字符运算 四…

Flink 学习一 Flink 简介

Flink 学习一 https://flink.apache.org/ 1.快速认识Flink 1.1 离线批计算与实时流式计算 批计算&#xff1a;有界流 流式计算&#xff1a;无界流 批计算&#xff1a;针对有界流&#xff0c;在计算结果前可以看到整个数据集&#xff1b;流计算&#xff1a;针对无界流&…

Nacos的安装和部署

接下来的时间&#xff0c;我会将Nacos的安装部署&#xff0c;以及在微服务中将其作为配置中心&#xff0c;注册中心&#xff0c;以及它的高级应用会一一为大家分享&#xff0c;今天为大家分享的是Nacos的安装和部署&#xff0c;以windows为例。 1. 下载安装包 官网下载地址&a…

LaTeX在双栏文章里面放单栏或双栏图片【有图有代码】

LaTeX在双栏文章里面放单栏或双栏图片【有图有代码】 双栏文章双栏文章放单栏图片双栏文章放单栏图片 双栏文章 在需要双栏的地方加入\begin{multicols}{2}…\end{multicols} 一般我们可能会希望摘要部分是单栏的。 其余部分设置为双栏&#xff0c;如下&#xff1a; \begin{m…

wxPython 矩形选择框 测试

如下图&#xff0c;这种矩形选择框在图形软件里是必备操作&#xff0c;用python怎么实现&#xff1f;我用wxpython 做了一个例子。 代码如下&#xff1a; #!/usr/bin/env python # -*- coding: utf-8 -*-# Project: test # File : SelectRectang.py # Author : Long.Xu <…

违禁词管理

目录 一、添加违禁词 1.添加一个违禁词 2.批量添加违禁词 二、违禁词实时检测 三、查看违禁词 四、删除违禁词 1.删除一个违禁词 2.批量删除违禁词 五、清空违禁词 一、添加违禁词 1.添加一个违禁词 添加违禁词 ?([\s\S]*) b:$读 违禁词/%群号% a []$ 如果:%括号1% 请…

Java设计模式——策略模式

1. 策略模式简介 策略模式: 策略模式是一种行为型模式, 它将对象和行为分开, 将行为定义为一个行为接口和具体行为的实现 策略模式最大的特点是行为的变化, 行为之间可以相互替换 每个if判断都可以理解为一个策略. 本模式是的算法可独立于使用它的用户而变化 2. 模式结构 策略…

全屋智能家居搭建初级指南(装修用户)

环境&#xff1a; 小M等智能设备 新装修用户 稳定网络环境 规划好电路布局 问题描述&#xff1a; 全屋智能家居如何搭建&#xff0c;初级指南&#xff08;装修用户&#xff09; 下面部分内容摘自小M智能家居解决方案&#xff1a; 一、装修中需要注意什么&#xff1f; …

39 # events 模块的实现原理

观察者模式&#xff1a;会有两个类&#xff0c;观察者会被存储到被观察者中&#xff0c;如果被观察者状态变化&#xff0c;会主动通知观察者&#xff0c;调用观察者的更新方法 发布订阅好处&#xff1a;可以解耦合 const EventEmitter require("events");// 使用自…

提前预体验阿里大模型“通义千问”的方法来了!

随着AI大模型的浪潮席卷全球&#xff0c;如今的AI技术已经颠覆了大家对传统AI的认识&#xff0c;微软更是用浏览器与搜索引擎上的实践&#xff0c;证明了当今的AI技术具备打破行业格局的能力。 对于我们应用开发者来说&#xff0c;AI基建的建设与竞争是无法参与的&#xff0c;…

数据结构——查找

文章目录 **1 查找的基本概念****2 顺序查找和折半查找****2.1 顺序查找****2.2 折半查找****2.3 分块查找** **3 树型查找****3.1 二叉排序树BST****3.1.1 二叉排序树的定义****3.1.2 二叉排序树的查找****3.1.3 二叉排序树的插入****3.1.4 二叉排序树的构造****3.1.5 二叉排序…

C#提升(一、泛型)

一、什么是泛型 泛型&#xff0c;即“参数化类型” 我们来看以下代码&#xff0c;目的很明确&#xff0c;就是显示参数类型&#xff0c;这种类似的代码或者说只有参数类型不同&#xff0c;但是功能相同时&#xff0c;我们如何让代码写的更优雅&#xff1f; 在泛型没有出现的…

LaTeX花式引用章节、图片、公式【有图有代码】

LaTeX花式引用章节、图片、公式【有图有代码】 1 使用~\cite, ~\cref, ~\autoref~\cref~\autoref~\ref 1 使用~\cite, ~\cref, ~\autoref 为什么要使用~ 因为 ~ 符号起到限制换行的作用&#xff0c;通常情况下&#xff0c;LaTeX会根据需要自动确定在引用标签和编号之间的换行点…