LeetCode 78 子集 中等难度
生活随笔
收集整理的这篇文章主要介绍了
LeetCode 78 子集 中等难度
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
78 子集
题目:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:输入: nums = [1,2,3] 输出: [[1],[2],[3],[1,2,3],[1,3],[2,3],[1,2],[] ]解题思路:
大概的思路就是每个数字只有两个选择,要么选择,要么不选择。就是回溯算法(深度优先搜索)。想象一棵树。
1.先写出深度优先算法函数;
函数定义:利用引用把值传回主函数;
2.主函数调用
3.在树的最底层把遍历结果放在result里
代码:
class Solution { public:vector<vector<int>> subsets(vector<int>& nums) {vector<int> item; //每个节点产生的新值vector<vector<int>> result; //总结果存储int n=nums.size();generate(n,nums,item,result);//n代表深度return result;} private:void generate(int i,vector<int>& nums,vector<int>& item,vector<vector<int>> &result) {if(i==0) {result.push_back(item); //到树的最深处后把选择的结果放在总结果里return; // 如果超过N层,则说明结束}int n=nums.size(); item.push_back(nums[n-i]); //选择nums,进一步 树的左支generate(i-1,nums,item,result);item.pop_back(); //退一步generate(i-1,nums,item,result);} };注意:
总结
以上是生活随笔为你收集整理的LeetCode 78 子集 中等难度的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: mysql解压版(免装版)安装过程缺失d
- 下一篇: LeetCode 90.子集 II 中