- 浏览: 183768 次
- 性别:
- 来自: 济南
文章分类
最新评论
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],
[]
]
求子集问题,最直接的办法是用回溯法,假设一共有n个元素,子集的个数为2^n个,找出长度length从0到n的所有的可能的组合,回溯的条件根据当前的length来决定。代码如下:
还有一种很巧妙的方法,用位运算的方法来解决。长度为n的数组num[],它的子集的个数为2^n个,假设第i个子集,我们如何用位运算得到它呢?我们可以将i依次右移0到n次,每次都与1位与,如果结果为1,假设位移了k位,那么就把数组中第k个元素nums[k]加入结果中。这样正好可以找到数组中所有的子集。代码如下:
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],
[]
]
求子集问题,最直接的办法是用回溯法,假设一共有n个元素,子集的个数为2^n个,找出长度length从0到n的所有的可能的组合,回溯的条件根据当前的length来决定。代码如下:
public class Solution { public List<List<Integer>> subsets(int[] nums) { LinkedList<Integer> list = new LinkedList<Integer>(); List<List<Integer>> llist = new LinkedList<List<Integer>>(); if(nums == null || nums.length == 0) return llist; java.util.Arrays.sort(nums); for(int lth = 0; lth <= nums.length; lth++) { getSubsets(0, lth, nums, list, llist); } return llist; } public void getSubsets(int start, int lth, int[] nums, LinkedList<Integer> list, List<List<Integer>> llist) { if(list.size() == lth) { llist.add(new LinkedList<Integer>(list)); return; } for(int i = start; i < nums.length; i++) { list.add(nums[i]); getSubsets(i + 1, lth, nums, list, llist); list.removeLast(); } } }
还有一种很巧妙的方法,用位运算的方法来解决。长度为n的数组num[],它的子集的个数为2^n个,假设第i个子集,我们如何用位运算得到它呢?我们可以将i依次右移0到n次,每次都与1位与,如果结果为1,假设位移了k位,那么就把数组中第k个元素nums[k]加入结果中。这样正好可以找到数组中所有的子集。代码如下:
public class Solution { public List<List<Integer>> subsets(int[] nums) { List<Integer> list; List<List<Integer>> llist = new ArrayList<List<Integer>>(); if(nums == null || nums.length == 0) return llist; java.util.Arrays.sort(nums); for(int i = 0; i < Math.pow(2, nums.length); i++) { list = new ArrayList<Integer>(); for(int j = 0; j < nums.length; j++) { if((i >> j & 1) == 1) list.add(nums[j]); } llist.add(list); } return llist; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 374Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 500Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 430Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 581Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 930Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 677Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 845Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 783You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 708For a undirected graph with tre ...
相关推荐
python python_leetcode题解之078_Subsets
关于Banach空间中的超弱紧子集和其等价性,程立新,程庆进,类比于Banach空间中的弱紧集和超自反空间中子集的性质,本文目的是讨论Banach空间中凸和非凸子集的超弱紧性质。作为结果,本文给出了超�
javascript js_leetcode题解之78-subsets.js
c c语言_leetcode题解之0078_subsets.zip
python python_leetcode题解之090_Subsets_II
c语言入门 C语言_leetcode题解之78-subsets.c
javascript js_leetcode题解之90-subsets-II.js
c语言基础 c语言_leetcode题解之0090_subsets_ii.zip
java java_leetcode题解之Partition to K Equal Sum Subsets.java
标题中的"subsets"指的是集合的子集概念,这在编程中是一个常见的数学问题,特别是在算法和数据结构的学习中。子集是指一个集合中的所有可能的不重复元素组合。例如,如果集合是{1, 2, 3},它的子集包括空集、{1}、{...
标题提到的"subsets:用于子集字体的字符列表"是针对字体文件的一种处理方式,旨在提高性能和减小文件大小。当你只需要字体文件中的部分字符(比如特定语言的字母或符号)时,可以创建一个包含这些字符的子集,而不是...
用于训练所有子集的python脚本
分类子集Web应用程序 目录 国际化 会话存储 错误处理 快取 基本文件结构 后端 部署方式本地主机 配置React脚本 整合与依存关系 ... GET /subsets GET /subsets/{subsetId}/ GET /subsets/{subsetId}/vers
本文讨论了Banach空间中的一致凸子集,并详细阐述了这一概念的相关性质。Banach空间是由波兰数学家斯特凡·Banach提出的一类完备的赋范向量空间,是泛函分析中的核心概念之一。在Banach空间理论中,一致凸性是判断...
var subsets = require ( 'subsets' ) ; var checks = 0 ; var sets = subsets ( [ 1 , 10 , 4 , 25 , 26 , 6 ] , function ( a , b ) { checks ++ ; return Math . abs ( a - b ) <= 3 ; } ) ; console . log ...
%SubSets SubSets(m,n) 返回一个 n 成员集的所有 m 维子集。 % Subsets(m,n,k) 从第 k 个成员开始。 % 这个例程递归地工作。 结果按列排列% 在矩阵中。
function recursion(numbers, currentSet, index, subsets, n, matchSet) if sum(currentSet) == sum(matchSet) && isequal(sort(currentSet), sort(matchSet)) subsets{end+1} = {currentSet, matchSet}; return...
new_subsets = [[num] + subset for subset in subsets for num in nums] return subsets + new_subsets nums = [1, 2, 3] print(generate_subsets(nums)) ``` 这个函数首先检查输入的集合是否为空。如果不为空...
create regional subsets by cookie cutter or projections export to ieee, text, binary, CSV, netcdf and mysql write of new grib2 fields parallel processing by using threads (OpenMP) parallel processing ...
Some functionality include, inventory and rea d grib2 files create subsets create regional subsets by cookie cutter or projections export to ieee, text, binary, CSV, netcdf and mysql write of new ...