回溯
ECHO-W
这个作者很懒,什么都没留下…
展开
-
力扣78. 子集
题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例: 输入:**nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 解法 分割问题,组合问题都是收集叶子节点问题 子集问题,是寻找树的所有节点。 代码 class Solution { public: vector<vector<int>> r原创 2021-03-01 16:31:56 · 246 阅读 · 0 评论 -
力扣131. 分割回文串
题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 解法 分割问题也是组合问题 如何模拟分割线:将判断回文加入到for循环中,先找到第一个分割线,加入到path中,在进行下一个递归寻找。 递归的主要逻辑就是找到一条分割线。 因为这是一个集合中找组合所以需要startIndex。 代码 class Solution { private: vector<vector<string>> res; vecto原创 2021-02-27 15:04:09 · 121 阅读 · 0 评论 -
力扣39. 组合总和
题目: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 示例: 解法 有时候剪枝不止需要加上附加条件,还需要对原有数据集进行改动,比如排序。 代码 class Solution { public: vector<int> path; vector<vector<int>> res; voi原创 2021-02-26 10:06:11 · 147 阅读 · 0 评论 -
力扣17. 电话号码的字母组合
题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: **输入:**digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 解法 代码 class Solution { private: const string letterMap[10] = {原创 2021-02-26 02:26:22 · 278 阅读 · 0 评论 -
力扣77. 组合
题目: 给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 示例: 示例: 解法 注意startIndex的开始值,因为它不是索引,所以需从1开始。 代码 class Solution { public: vector<int> path; vector<vector<int>> res; void backtracking(int n, int k, int startIndex) { if (原创 2021-02-25 10:59:18 · 116 阅读 · 0 评论