您的位置:首页 > 教育 > 锐评 > LeetCode 子集

LeetCode 子集

2024/10/5 14:32:42 来源:https://blog.csdn.net/qq_51286996/article/details/140093997  浏览:    关键词:LeetCode 子集

原题链接78. 子集 - 力扣(LeetCode)

这是一道暴力搜索问题参考大佬们的题解,对这类题目做出一下总结

1.确定递归参数变量

2.递归结束条件

3.做出选择,递归调用进入下一层

4.回溯,返回到递归前的状态

要完成前面这几步有一个重要的前提条件,你要确定采用什么样式的递归,这个来源于解题经验,

这道题采用顺序递归(我想的名字),举个例子,1,2,3,如果我先选了1,那么按照从左到右的顺序剩下的子集里可选的就是2,3,我下面要从2,3当中选一个,如果选2,那么按照从左到右的顺序,下面可选的子集就只有3.

如果我选3呢,那么按照从左到右的顺序,剩下的子集里就没有可选的了,因为从左到右吗,2被我们跳过了,选了3之后就该选3后面的

class Solution {
private: vector<vector<int>>res;void backtrack(vector<int>num,vector<int>& ans,int start){//终止条件res.push_back(ans);//这里在最开始的时候压入了一个空集合for (int i = start; i < num.size(); i++){ans.push_back(num[i]);backtrack(num, ans, i + 1);ans.pop_back();//弹出最后一个元素,就是我们刚才压入的元素}}
public:vector<vector<int>> subsets(vector<int>& nums) {vector<int>ans;backtrack(nums, ans, 0);return res;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com