121、【回溯算法】leetcode ——78. 子集(C++版本)
2023-09-11 14:20:01 时间
题目描述
原题链接:78. 子集
解题思路
本题是子集问题,若把遍历过程看作一棵树,子集问题实际上就是获取数中的所有结点
,而组合问题和分割问题是仅获取树中的叶子结点
。
子集问题获取每个结点方式,是在每层向下遍历前存取结点。
class Solution {
public:
vector<int> path;
vector<vector<int>> res;
void backtracking(vector<int>& nums, int startIndex) {
res.push_back(path); // 为了正常存取叶子结点,需要把它放到if前面
if(startIndex == nums.size()) return ;
for(int i = startIndex; i < nums.size(); i++) {
path.push_back(nums[i]);
backtracking(nums, i + 1);
path.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
backtracking(nums, 0);
return res;
}
};
参考文章:78. 子集
相关文章
- [C/C++基础知识] 面试再谈struct和union大小问题
- C++ 结构体和类的区别
- c++11:lambda表达式的使用
- 第四届蓝桥杯C++B组国(决)赛真题
- leetcode 10 正则表达式匹配(c++)
- VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本号,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 解答私信@被c++折磨头秃的花季美少女 //C++ 编写一个进阶版的进制转换程序,运行功能如下:请选择要输入的数字的进制(2、8、10、16):请输入该数字:请选择要转换成的进制(2、8。。。
- 解答私信@被c++折磨头秃的花季美少女 //C++ 写一个带命令行参数的程序,可以实现将参数求和、求平均值以及排序之后输出(参数的数量不确定)。
- C++ 解压文件及文件夹 使用zlib开源库
- Leetcode 搜索旋转排序数组(执行用时: 0 ms , 在所有 C++ 提交中击败了 100.00% 的用户)
- LeetCode 整数转罗马数字(执行用时: 12 ms , 在所有 C++ 提交中击败了 32.38% 的用户)
- C/C++产生随机数
- C/C++,windows下编译报错:error C3861: “strcasecmp”: 找不到标识符
- C++之读写文件操作(fread/fwrite)(七十七)
- VC++ socket编程中设置socket选项的ioctlsocket、setsockopt和WSAIoctl函数的使用(附源码)
- C++11 快速初始化成员变量
- 【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
- c/c++ 静态代码检查工具
- 【跟学C++】C++动态数组——vector/deque类(Study14)
- Windows系统卡顿,CPU占用率高,C/C++ IntelliSense Server for Visual Studio Code