lintcode--17. 子集
程序员文章站
2024-02-24 18:09:22
...
描述
给定一个含不同整数的集合,返回其所有的子集
注意事项
子集中的元素排列必须是非降序的,解集必须不包含重复的子集
样例
如果 S = [1,2,3],有如下的解:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
代码
import java.util.*;
public class Solution {
/*
* @param nums: A set of numbers
* @return: A list of lists
*/
public List<List<Integer>> subsets(int[] nums) {
// write your code here
List<List<Integer>> result=new ArrayList<>();
if(nums==null){
return null;
}
Arrays.sort(nums);
List<Integer> list=new ArrayList<>();
for(int i=0;i<=nums.length;i++){ //这里i的值代表子串长度的可能值,0代表空,直到子串的长度为nums的长度
list.clear();
core(nums,0,i,list,result);
}
return result;
}
/**
*
* @param nums
* @param start 数组当前的索引
* @param size 当前指定的子串的长度
* @param list 用于保存某个子串
* @param result
*/
void core(int[] nums,int start,int size,List<Integer> list,List<List<Integer>> result){
if(list.size()==size){ //判断当前子串的长度是否和指定的长度相同
result.add(new ArrayList<>(list));
}else{
for(int i=start;i<nums.length;i++){
list.add(nums[i]); //向list添加当前子串的元素
core(nums,i+1,size,list,result);
list.remove(list.size()-1);//移除第一步添加的元素
}
}
}
}
上一篇: 如何正确配置Nginx + PHP
推荐阅读
-
lintcode--17. 子集
-
java求解集合的子集的实例
-
在Python的Django框架中显示对象子集的方法
-
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
-
416.分割等和子集(给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。)
-
noi.ac#309 Mas的童年(子集乱搞)
-
C++ map insert 另一个map的子集
-
MySQL 5.7 关于 JSON 类型的子集Key/Value获取方法分享
-
HihoCoder#1279 : Rikka with Sequence(dp 枚举子集 二进制 神仙题)
-
基于集合的子集与集合的全排列的相关问题