78.子集(中等)
2021/4/11 10:25:19
本文主要是介绍78.子集(中等),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
思路:
每一层选出一个数产生分支,利用深度优先(回溯算法),也就是一个栈
代码:
class Solution { public List<List<Integer>> subsets(int[] nums) { int n=nums.length; Deque<Integer> path=new ArrayDeque<>(); List<List<Integer>> res=new ArrayList<>(); bfs(path,res,0,n,nums); return res; } private void bfs( Deque<Integer> path, List<List<Integer>> res, int begin, int n, int[] nums ){ res.add(new ArrayList<>(path)); for(int i=begin;i<n;i++){ path.addLast(nums[i]); bfs(path,res,i+1,n,nums); path.removeLast(); } } }
分解:
1)这里不需要设置visited,因为每个分支都不会往回找,i是从begin开始的,而不是从0开始
2)这里的空集[]不需要特别加入,第一次搜索i=0时就将此情况算入了
3)注意:
i)for循环里面bfs的begin是i+1,而不是i
ii)path.addLast(nums[i])而不是nums[begin]
这篇关于78.子集(中等)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南