采用回溯法:对于例子图解执行过程如下,其中向上的分支为向下递归,向下的分支为第二次递归,因此已经push了对应的下标的值,则从根到右边连起来的路径即为组合

由于整个过程类似于二叉树的中序遍历,因此代码形式也类似于中序遍历的递归代码,i也可以代表当前所在的层数,当到达第3层时输出结果;

/**
记录数组下标i,储存结果e,最终结果res
递归边界,数组下标到达终点len(即i==len)
**/
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int len=nums.size();
if(len==) return {};
vector<vector<int>> res;
vector<int>e;
dfs(,nums,res,e);
return res;
}
void dfs(int i,vector<int>&nums,vector<vector<int>>&res,vector<int>e){
if(i>=nums.size()){
res.push_back(e);return;
}
dfs(i+,nums,res,e);
e.push_back(nums[i]);
dfs(i+,nums,res,e);
}
};

最新文章

  1. 浅谈sql中的in与not in,exists与not exists的区别
  2. Code First 数据注释--DatabaseGenerated
  3. 在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存
  4. iOS 按钮连续提交执行一次(如留言提交,多次拍照问题)
  5. phpwind9.0升级到php7后出现的问题修复
  6. Day04.a(对象类型的转换,多态)
  7. 2018(2017)美图java服务端笔试(回忆录)
  8. poj2393 Yogurt factory(贪心,思考)
  9. windows启动项管理
  10. mongodb之oplog
  11. js九九乘法表的应用
  12. java布局学习(新)
  13. 【整体二分】【P3527】 [POI2011]MET-Meteors
  14. Linux上Nginx部署配置--二级域名配置
  15. C语言 关键字
  16. 荣誉墙项目day28 django常用函数
  17. 工作笔记-javascript-网络层封装
  18. CMake是用于生成make文件的跨平台编译文件
  19. java并发机制的底层实现原理
  20. js实现点击按钮滚动条缓慢滚动到顶部

热门文章

  1. python动态添加属性
  2. Windows 聚焦的锁屏壁纸设置为桌面壁纸
  3. php页面加载完毕后再显示购买按钮
  4. Scale-up and Scale-out(转载)
  5. POJ 1038 Bugs Integrated Inc (复杂的状压DP)
  6. Apache工作流程
  7. Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02
  8. iOS的navigationbar设置左边按钮文字
  9. Here is a test page for my new blog in cnblogs
  10. JS实现 Tab栏切换案例