`
huntfor
  • 浏览: 206058 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Subsets

 
阅读更多

新博文地址:[leetcode]Subsets

Subsets

Given a set of distinct integers, S, 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 S = [1,2,3], a solution is:

[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

求数组s的所有子集合, Elements in a subset must be in non-descending order. 我刚开始以为默认的s也是排好序的,结果被坑了。所以在进行处理之前,需要先对s进行排序

算法思想还是DFS,跟昨天写的前几篇很像。不再啰嗦

ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    public ArrayList<ArrayList<Integer>> subsets(int[] s) {
    	if(s == null || s.length == 0){
    		return result;
    	}
    	Arrays.sort(s);
    	result.add(new ArrayList<Integer>());
    	for(int i = 0; i < s.length ; i++){
    		ArrayList<Integer> list = new ArrayList<Integer>();
    		dfs(i, s, list);
    	}
    	return result;
    }
    
	private void dfs(int begin,int[] s,ArrayList<Integer> list){
		if(begin < s.length){
			list.add(s[begin]);
			ArrayList<Integer> cpyList = new ArrayList<Integer>(list);
			result.add(cpyList);
		}else{
			return;
		}

		for(int i = begin + 1; i < s.length; i++){
			dfs(i,s,list);
			list.remove(list.size() - 1);//回溯
		}
	}

 

 

欢迎吐槽

 

 

分享到:
评论

相关推荐

    python-leetcode题解之078-Subsets

    python python_leetcode题解之078_Subsets

    python-leetcode题解之090-Subsets-II

    本文的重点是解决 LeetCode 上的一道题——Subsets-II(编号090)。该题要求编写一个函数,找出给定数组的所有可能的子集,并返回这些子集。这个问题是组合数学中的一个经典问题,在面试中也经常出现。解决这类问题...

    C语言-leetcode题解之78-subsets.c

    针对LeetCode题解之78-subsets.c,这篇代码展示了一个典型的C语言实现。首先,我们需要明白,解决这类问题的常用方法是递归或者位运算。递归方法通常更加直观,思路是先固定一个元素,然后递归地求出剩余元素的所有...

    c语言-leetcode题解之0078-subsets.zip

    本压缩包“c语言-leetcode题解之0078-subsets.zip”包含了使用C语言解决该问题的详细代码示例,旨在帮助C语言程序员深入理解子集问题,并提供一种可能的解决方式。代码中不仅有完整的函数实现,还包含了相应的解释...

    js-leetcode题解之78-subsets.js

    在此背景下,"js-leetcode题解之78-subsets.js" 就是这样一个用于分享 subsets 题目 JavaScript 解法的资源。通过研究这类资源,开发者可以学习到如何使用回溯法等算法思想来解决实际问题,从而提升自身的编程实践...

    c语言-leetcode题解之0090-subsets-ii.zip

    本压缩包文件“c语言-leetcode题解之0090-subsets-ii.zip”即为一套使用 C 语言编写的题解,针对 LeetCode 上的一道特定题目:“Subsets II”(编号为0090)。这个题目的核心是解决子集问题,且需要处理含有重复元素...

    java-leetcode题解之Partition to K Equal Sum Subsets.java

    Java-leetCode题解之Partition to K Equal Sum Subsets.java是一篇深入探讨如何用Java语言解决特定编程题目的文章。文章主要围绕一道经典的计算机算法与编程问题展开,即如何将一个给定的整数数组划分成K个和相同的...

    js-leetcode题解之90-subsets-II.js

    在JavaScript中解决LeetCode问题库中的第90题——子集II,是一个典型的回溯算法问题。该问题要求给定一个可能包含重复元素的整数数组,返回该数组所有可能的子集。解决这个问题的关键在于,如何避免在子集的生成过程...

    Leetcode题目+解析+思路+答案.pdf

    - **Subsets**:找出所有可能的子集。 - **Permutation**:生成全排列。 6. **贪心(Greedy)**: - **Jump Game**:跳跃游戏,判断是否能到达数组末尾。 - **Gas Station**:寻找最短的加油路线。 - **Candy*...

    Leetcode部分解答(126题)

    10. **Subsets II .cpp** - 第90题“子集II”,要求找到一个集合的所有不重复子集,解冑通常使用递归或回溯法。 以上代码覆盖了算法设计中的多种重要思想,包括回溯法、动态规划、字符串处理、区间操作和深度/广度...

    _leetcode-python.pdf

    - Subsets: 给定一组可能包含重复元素的整数数组,返回该数组所有可能的子集。 - Word Search: 给定一个m×n的二维字符网格board和一个单词(字符串)word,如果word存在于网格中,则返回true;否则,返回false。 - ...

    LeetCode leetcode部分题解答代码实现

    * Subsets:给定一个数组,返回所有可能的子集。这个题目需要使用回溯算法的思想,将数组分解成更小的子数组,并找到所有可能的子集。 6. 贪心算法 贪心算法是一种非常重要的算法思想,LeetCode 中有很多关于贪心...

    leetcode-常见考题2.pdf

    - 在 Subsets 题目中,回溯算法用于找出集合的所有可能子集。 14. **递归与迭代**: - 递归是一种常见的编程技巧,它将问题分解为更小的问题,而迭代通常是递归的替代方案,使用循环结构代替递归结构。 - 在 ...

    leetcode写题闪退-LeetCode:leetcodeOJ

    leetcode写题闪退 #*的多少代表此题的有意思程度 有几题第一次写的时候思绪比较混乱: *****Regular Expression Matching 2014.10.29 对于Find Minimum in Rotated Sorted Array II 和 Find Minimum in Rotated ...

    c++-c++编程基础之leetcode题解第78题子集.zip

    第78题"子集"(Subsets)是LeetCode中的一个经典问题,它涉及到深度优先搜索(DFS)或回溯算法的应用。在此,我们将深入探讨这个问题的解决方案以及相关的C++编程知识。 ### 问题描述: 给定一个没有重复元素的整数...

    python-leetcode面试题解之第78题子集-题解.zip

    在LeetCode平台上的第78题,名为“Subsets”(子集),是一个经典的回溯算法问题,主要考察的是对数组操作和组合问题的理解。这道题目要求我们找到给定整数数组的所有可能子集。解这类问题时,Python作为一门简洁且...

    javascript-leetcode面试题解递归与回溯问题之第78题子集-题解.zip

    LeetCode是一个广受欢迎的在线平台,它提供了许多编程题目,帮助开发者提升算法技能并准备求职面试。第78题“子集”是LeetCode中的一个经典递归与回溯问题,旨在考察开发者对这两种核心算法的理解和应用。 递归是一...

    javascript-leetcode面试题解递归与回溯问题之第90题子集II-题解.zip

    本篇内容主要聚焦于JavaScript解决LeetCode中的第90题——"子集II"(Subsets II)的递归与回溯算法。 子集II问题要求我们找到一个给定整数数组的所有不重复子序列,且这些子序列中包含至少两个连续的数字。这个题目...

    uber leetcode

    #### 四、Subsets - **知识点:**递归、回溯。 - **题目描述:**给定一组不含重复元素的整数数组nums,返回其所有可能的子集(幂集)。 - **应用场景:**组合数学问题,如统计学中的组合选择、概率计算等。 #### 五...

Global site tag (gtag.js) - Google Analytics