摘要: 回溯法总结 回溯算法能解决如下问题: 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排列,有几种排列方式 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一个N个数的集合里有多少符合条件的子集 棋盘问题:N皇后,解数独等等 代码随想录 (programmerca 阅读全文
posted @ 2024-02-27 19:18 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 491.递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 思路:一开始一直报访问异常的错误,最后只好参考官网答案,结果竟然是因为我递归参数写错了导致程序一直出问题???(⊙︿⊙) 这里去重用的是标记数组,可以用集合unordered_set,但由于本题数据范围比较小,所以我 阅读全文
posted @ 2024-02-26 23:50 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 思路:投降。在判断字符串是否合法这部分遇到了困难。 class Solution { private: vector<string> result;// 记录结果 // startIndex: 搜索的起始位置,point 阅读全文
posted @ 2024-02-24 22:54 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 思路:依然一是套用回溯模板,但是我们这里用回溯的是i而不是i+1,因为元素可以重复使用,注意for循环里if(sum(path)<=target)的等号不能少。 class Solution { public: vector<int 阅读全文
posted @ 2024-02-23 19:20 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 组合总和III 题目链接:216. 组合总和 III - 力扣(LeetCode) 思路:仿照昨天的递归模板写的,同样是for循环横向遍历,递归纵向遍历。注意当k>n时要直接跳出,否则会判断栈溢出。 额外发现一个问题就是在累加sum时,用for(auto i:path)sum+=path[i];会出 阅读全文
posted @ 2024-02-22 18:27 SandaiYoung 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 回溯理论基础 回溯法,与递归有类似形式,本质是穷举(可能存在剪枝),效率并不高。 回溯的模板: void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtra 阅读全文
posted @ 2024-02-21 13:31 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 669.修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 - 力扣(LeetCode) 思路:本题原来想沿用上一次最后一道题的思路,用删除二叉搜索树特定值节点的方法来解决,但是会报错,找不出问题所在(在评论区也是一堆套用450代码报错的)。只能参考官网答案了。 官网的方法没有用delete,但是思 阅读全文
posted @ 2024-02-20 18:19 SandaiYoung 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 思路:只要利用二叉搜索树特性,只要当前节点的值位于要求的两个节点之间,就必定是我们要找的节点。最简单的一集。 class Solution { public: TreeNode* lowestCom 阅读全文
posted @ 2024-02-19 16:00 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 530.二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) 思路:由于是二叉搜索树,先用中序遍历将节点存入数组中,再遍历数组相邻元素即可。 class Solution { public: void qianxu(TreeNode* root,vecto 阅读全文
posted @ 2024-02-17 21:35 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 654.最大二叉树 题目链接:654. 最大二叉树 - 力扣(LeetCode) 思路:普通递,每层递归的思想和快排有类似之处,同时终止条件也和快排相似。但我的写法效率很低。 class Solution { public: TreeNode* traversal(vector<int>nums,i 阅读全文
posted @ 2024-02-17 01:07 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑