[LeetCode][Java] Subsets
2023-09-11 14:20:46 时间
题目:
Given a set of distinct integers, nums, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3]
, a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
题意:
给定一个由不同数字组成的数组nums,返回这个数组中的全部的子集。
注意:
1.子集中的元素必须是升序排列
2.终于的结果中不能包括反复的子集。
算法分析:
结合上一题《Combinations》的方法,将上一题作为子函数来使用。
AC代码:
<span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution { public ArrayList<ArrayList<Integer>> subsets(int[] nums) { ArrayList<ArrayList<Integer>> fres = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> flist= new ArrayList<Integer>(); Arrays.sort(nums); fres.add(flist); for(int i=1;i<=nums.length;i++) { ArrayList<ArrayList<Integer>> sres = new ArrayList<ArrayList<Integer>>(); sres=combine(nums, i); fres.addAll(sres); } return fres; } public static ArrayList<ArrayList<Integer>> combine(int nums[], int k) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if(nums.length<=0 || nums.length<k) return res; helper(nums,k,0,new ArrayList<Integer>(), res); return res; } private static void helper(int nums[], int k, int start, ArrayList<Integer> item, ArrayList<ArrayList<Integer>> res) { if(item.size()==k) { res.add(new ArrayList<Integer>(item)); return; } for(int i=start;i<nums.length;i++) // try each possibility number in current position { item.add(nums[i]); helper(nums,k,i+1,item,res); // after selecting number for current position, process next position item.remove(item.size()-1); // clear the current position to try next possible number } } }</span>
相关文章
- Java 并发工具包 java.util.concurrent 用户指南
- Java 网络编程的一些概念
- 【LeetCode-面试算法经典-Java实现】【101-Symmetric Tree(对称树)】
- [LeetCode][Java] Binary Tree Level Order Traversal
- Java Invoked OOM-Killer - OOM不一定是来自于java heap
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 第七节:详细讲解Java中的日期,java.util.date
- 深入浅出的Java网络通信
- Java-struts2的问题 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
- java学习笔记2
- java高级用法之:在JNA中将本地方法映射到JAVA代码中
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- Java调用Telnet示例
- java web下串口通讯
- 华为OD机试 -最大排列(Java) | 机试题+算法思路+考点+代码解析 【2023】
- Java空指针异常解决java.lang.NullPointerException解决心得
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- JAVA多线程面试题
- java POI 单元格格式设置居中
- 在JVM的GC机制中,Java对象不再使用时,为什么要赋值为 null ?
- Java 报错 Information:java: javacTask: 源发行版 8 需要目标发行版 1.8
- Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not
- 解决Java使用response下载文件报错,并总结可能出错的原因: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。