leetcode 78. Subsets DFS深度优先搜索
来源:互联网 发布:sql 删除表中数据 编辑:程序博客网 时间:2024/05/16 15:30
Given a set of distinct integers, nums, return all possible subsets.
Note: 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],
[]
]
这道题和上一道题的做法很类似, leetcode 77. Combinations 按照index递归搜索+全排列做法
这两道题应该放到一起学习。
代码如下:
import java.util.ArrayList;import java.util.List;public class Solution { List<List<Integer>> res=new ArrayList<List<Integer>>(); public List<List<Integer>> subsets(int[] nums) { if(nums==null || nums.length<=0) { res.add(new ArrayList<Integer>()); return res; } List<Integer> one=new ArrayList<>(); getFullPute(nums,one,0); return res; } private void getFullPute(int[] nums,List<Integer> one, int i) { if(i==nums.length) { res.add(new ArrayList<Integer>(one)); }else { //第一次递归调用是不选择当前元素的递归 getFullPute(nums, one, i+1); //第二次递归调用是选择当前元素的调用 one.add(nums[i]); getFullPute(nums, one, i+1); one.remove(one.size()-1); } } //其实还有另一种思想,使用一个flag数组,长度为nums的length,其中flag[i]为0表示添加该元素,为 //0表示不添加,这个也可以使用递归实现,和上面的方法类似}
下面是C++的做法,和上一道题一模一样,就是一个DFS深度优先遍历搜索的做法
代码如下:
#include <iostream>#include <vector>using namespace std;class Solution{public: vector<vector<int>> res; vector<vector<int>> subsets(vector<int>& nums) { if (nums.size() <= 0) return res; vector<int> one; getAllByDFS(nums, 0, one); return res; } void getAllByDFS(vector<int>& nums, int index, vector<int>& one) { if (index == nums.size()) { res.push_back(one); return; } else { getAllByDFS(nums, index + 1, one); one.push_back(nums[index]); getAllByDFS(nums, index + 1, one); one.erase(one.end() - 1); } }};
阅读全文
0 0
- leetcode 78. Subsets DFS深度优先搜索
- leetcode 90. Subsets II DFS深度优先搜索 + 全排列
- 78. Subsets 【LeetCode算法之旅之深度优先搜索】
- LeetCode随笔之DFS深度优先搜索
- leetcode:深度优先搜索(DFS)和广度优先搜索(BFS)
- 深度优先搜索 DFS
- 深度优先搜索 DFS
- DFS 深度优先搜索
- DFS 深度优先搜索
- 深度优先搜索(DFS)
- 深度优先搜索(DFS)
- 深度优先搜索DFS
- DFS深度优先搜索
- 深度优先搜索(DFS)
- dfs深度优先搜索
- dfs 深度优先搜索
- 深度优先搜索(DFS)
- 深度优先搜索DFS
- 2017.09.09【NOIP 普及组】模拟赛C组
- Hogan模板引擎的使用
- 集合框架3
- iOS:报错:闭包不调用
- 手机自适应
- leetcode 78. Subsets DFS深度优先搜索
- Annotation--自定义Annotation
- python-1
- 士兵队列训练问题--队列(数据结构)
- 暑期总结
- 集合框架4
- 简单作业:求n!并输出
- 【转】最佳实践 —— 详细谈谈如何减小APK体积
- 机器翻译