【LeetCode】No.78. Subsets -- Java Version

news/2024/4/30 7:34:38/文章来源:https://blog.csdn.net/qq_41071754/article/details/127673643

题目链接:

1. 题目介绍(Subsets)

Given an integer array nums of unique elements, return all possible subsets (the power set).

【Translate】: 给定一个包含多个唯一元素的整数数组,返回所有可能的子集(幂集)。

The solution set must not contain duplicate subsets. Return the solution in any order.

【Translate】: 解决方案集不得包含重复的子集。你可以以任何顺序返回解决方案。

【测试用例】:

testcase

【条件约束】:

constraint

2. 题解

2.1 双循环

原题解来自于TWiStErRob的Simple iteration (no recursion, no twiddling) + explanation。

他的想法是从一个空子集开始,然后取或不取输入数组中的下一个元素,他通过了listMap的size()巧妙的设置了内层循环的范围,保证了所有情况。下方是输入[1,2,3]的情况:
demo
由于该题对于返回结果的order没有要求,所有这里我省略了原题解中的sort()排序,如果要求了排序,这就需要到了sort()。

class Solution {public List<List<Integer>> subsets(int[] nums) {int n = nums.length;List<List<Integer>> listMap = new ArrayList<>();listMap.add(new ArrayList<>());for (int i = 0; i < n; i++){for (int j = 0,size = listMap.size(); j < size; j++){List<Integer> list = new ArrayList<>(listMap.get(j));list.add(nums[i]);listMap.add(list);}}return listMap;}
}

act1

2.2 递归

原题解来自于yetiiiiii的 📌 [Java] Intuition of Approach | Backtracking。
mind2

class Solution {List<List<Integer>> result;public List<List<Integer>> subsets(int[] nums) {result = new ArrayList();if(nums==null || nums.length==0) return result;subsets(nums,new ArrayList<Integer>(), 0);return result;}private void subsets(int[] nums, ArrayList<Integer> temp, int index) {// base conditionif(index >= nums.length) {result.add(new ArrayList<>(temp));return;}// main logic// case 1 : we pick the elementtemp.add(nums[index]);subsets(nums, temp, index+1); // move aheadtemp.remove(temp.size()-1);// case 2 : we don't pick the element ( notice, we did not add the current element in our temporary listsubsets(nums, temp, index+1); // move ahead}
}

act2
更多的题解详见 issac3的 A general approach to backtracking questions in Java (Subsets, Permutations, Combination Sum, Palindrome Partitioning)。

3. 参考资料

[1] List<List<Integer>>初始化方法 | CSDN
[2] power set的定义和理解 | CSDN

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内部在看的Tomcat笔记,真不愧是阿里技术官

前言 SpringBoot中的Tomcat容器 SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来&#xff0c;让开发者在几分钟内就可以创建一个完整的Web服务&#xff0c;极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分&#xff0c;…

学弟:手工测试和自动化测试的区别是啥?

一、 手工测试 1、 什么是手工测试&#xff1f; 手工测试是由测试工程师手动测试软件各项功能以发现缺陷的过程。测试人员应该从最终用户的角度出发&#xff0c;并确保所有功能都按照项目的需求文档中的说明工作。在此过程中&#xff0c;测试人员执行测试用例 并手动生成报告…

Word控件Spire.Doc 【文本】教程(11) ;如何将文本分成两列并在它们之间添加行

列被广泛用于设置页面布局&#xff0c;它可以将文本分成两列或多列&#xff0c;以便文本可以在同一页面上从一列流到下一列。使用 Spire.Doc&#xff0c;我们可以实现此功能并同时在列之间添加一条线。本文将介绍如何将文本拆分为两列并在它们之间添加行。 Spire.Doc for.NET …

图解 Redis 分布式锁,写得太好了!

分布式锁的演进 基本原理 我们可以同时去一个地方“占坑”&#xff0c;如果占到&#xff0c;就执行逻辑。否则就必须等待&#xff0c;直到释放锁。“占坑”可以去redis&#xff0c;可以去数据库&#xff0c;可以去任何大家都能访问的地方。等待可以自旋的方式。 阶段一 publi…

上海各梯队IB学校怎么选?

近日&#xff0c;随着各大国际学校开始公布秋招信息&#xff0c;第一轮秋招考试也将在本周末正式到来。 除了春招主力军A-level学校以外&#xff0c;许多IB和AP美高学校的秋招都格外收到关注。上海到底有哪些优质的IB学校&#xff1f;学生的IB成绩和升学情况如何&#xff1f;什…

中国房车产业深度调研及未来发展现状趋势预测报告

高消费人群的房车旅行新宠&#xff0c;百亿规模产业正在爆发。 随着人们收入和消费水平的提高&#xff0c;具有移动性、独立性、私密性等特点的房车旅游正成为新的热门中高端旅游产品。在小红的书里&#xff0c;与房车相关的笔记有40多万条。在Tik Tok的“房车”和“房车旅行”…

日本知名汽车零部件公司巡礼系列之株式会社104

株式会社104 业务内容&#xff1a; 汽车部件制造(刹车零件、发动机支架、其他支架等) 房屋部件制造 复印机等零件制造 公司简介&#xff1a; 成立时间&#xff1a;1978年3月 资本金&#xff1a;1000万日元&#xff08;2022年汇率约50万人民币&#xff09; 员工数&#x…

BSA-PEI,牛血清白蛋白-聚乙烯亚胺,BSA-聚乙烯亚胺的保存

产品名称&#xff1a;牛血清白蛋白-聚乙烯亚胺&#xff0c;BSA-聚乙烯亚胺 英文名称&#xff1a;BSA-PEI 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 温馨提…

68、SpringAQMP(消息转化器)

SpringAQMP&#xff08;消息转化器&#xff09; 第一步&#xff1a;查看我们的发送消息感觉都可以是java对象 第二步&#xff1a;在配置里声明一个object队列 第三步&#xff1a;发送一个对象的消息 测试&#xff1a; RbMQ最早只支持字节&#xff0c;这里spring运行我们发obj…

JavaWeb传统商城(MVC三层架构)的促销功能模块【进阶版】

文章目录一.JavaWeb商城项目的促销功能模块【进阶版】开发过程记录1.1 项目背景1.2 需求分析1.3 开发流程/顺序二.促销页面(0.1颗星)2.1 需求介绍2.2 JSP页面2.3效果展示三,商品详情页面(0.2颗星)3.1 需求介绍和效果图3.2 数据库分析3.2 Servlet层3.3 Service层3.4 DAO层3.5 JS…

笔试强训(三十二)

目录一、选择题二、编程题2.1 淘宝网店2.1.1 题目2.1.2 题解2.2 斐波那契凤尾2.2.1 题目2.2.2 题解一、选择题 &#xff08;1&#xff09;处于运行状态的操作系统程序应放在(B) A.寄存器 B.主存 C.辅存 处于运行状态的操作系统程序也就是进程&#xff0c;进程需要放在内存中执…

Oracle行转列(pivot)和Oracle列转行(unpivot)

行变列&#xff0c;列变行在生成报表的时候经常遇到&#xff0c;行变列叫做"Pivot”, 反之叫做"Unpivot”。 在Oracle11g之前&#xff0c;一般都是通过case来实现&#xff0c;但是Oracle11g及其以后直接支持PIVOT和UNPIVOT的操作。 pivot 语法&#xff1a; SELECT *…

从零开始学习opencv——在虚拟环境下安装opencv环境

毕设准备做cv相关项目&#xff0c;今天开始学习cv基础知识&#xff0c;课程为B站“【不要再看那些过时的OpenCV老教程了】2022巨献&#xff0c;OpenCV零基础小白最新版全套教程(人工智能机器视觉教程)” 1.在windows系统中某文件夹下安装虚拟环境&#xff1a; pip install vir…

软件工程师进入编程世界的55个锦囊:《 好代码 ,坏代码》

软件工程领域关于如何写出优秀代码的建议和观点非常多。但生活没有那么简单, 绝不只是尽可能多地吸取好的建议并严格遵守。由于不同来源的建议往往相互矛盾&#xff0c;我们怎么知道要听从哪个建议。更重要的是&#xff0c;软件工程并不是一门精确的科学&#xff0c;不可能将其…

Spring Security是什么? - 简单例子(三)

2、spring security中&#xff0c;安全配置通过继承WebSecurityConfigurerAdapter来配置 Configuration public class MyWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter{protected void configure(HttpSecurity http) throws Exception {//做大量的配置/…

万字深剖 Linux I/O 原理

目录传统艺能&#x1f60e;梅开二度&#x1f914;当前路径&#x1f914;三大输入输出流&#x1f914;系统文件 I/O&#x1f914;open&#x1f60b;open 返回值&#x1f914;close&#x1f60b;write&#x1f60b;read&#x1f60b;文件描述符fd&#x1f60b;对应关系&#x1f6…

【好书推荐】《Python编程:从入门到实践(第2版)》

第二版是2020年底发布的&#xff0c;第二版相比较第一版更新了不少新东西。 不错的python入门书&#xff0c;第一部分讲基础知识&#xff0c;第二部分讲了三个实际的项目&#xff1a;一个小游戏&#xff0c;一个数据可视化程序&#xff0c;一个网站。 可以方便地下载全书的源…

学习笔记-Kioptrix4-WalkThrough

Kioptrix4-WalkThrough 文章作者 xidaner & r0fus0d 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 靶机地址 https://www.vulnhub.com/entry/kioptrix-level-13-4,25/ Description Again a long delay bet…

实验4 类与数组

实验任务51 #pragma once2 3 #include<iostream>4 #include<cassert>5 using std::cout;6 using std::endl;7 8 class vectorInt9 { 10 private: 11 /* data */ 12 int size; 13 int *p; 14 public: 15 vectorInt(int n); 16 vectorInt(int n,…

分布式光伏站远程监控组网解决方案

一、项目背景随着规模性的光伏电站陆续建设和投入运行&#xff0c;如何实时了解电站的运行状况&#xff0c;如何满足上一级系统或电网调度系统的监控需求成为了急需解决的事情。为使对分布式能源实现高效监控、满足电力接入电网要求、合理调配、集中监控、电网分析、配网自动化…