02 2024 档案

摘要:买卖股票的最佳时机II 题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode) 思路:本题的贪心法在于用不选择亏钱的买卖,某天能赚钱就一定出手,每天都赚钱从而获得总体的最大利益。具体是计算每一天的利润后,如果大于0,就记入总利益。 class Solution { public: 阅读全文
posted @ 2024-02-29 15:56 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 分发饼干 class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sor 阅读全文
posted @ 2024-02-29 01:18 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:回溯法总结 回溯算法能解决如下问题: 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排列,有几种排列方式 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一个N个数的集合里有多少符合条件的子集 棋盘问题:N皇后,解数独等等 代码随想录 (programmerca 阅读全文
posted @ 2024-02-27 19:18 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:491.递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 思路:一开始一直报访问异常的错误,最后只好参考官网答案,结果竟然是因为我递归参数写错了导致程序一直出问题???(⊙︿⊙) 这里去重用的是标记数组,可以用集合unordered_set,但由于本题数据范围比较小,所以我 阅读全文
posted @ 2024-02-26 23:50 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 思路:投降。在判断字符串是否合法这部分遇到了困难。 class Solution { private: vector<string> result;// 记录结果 // startIndex: 搜索的起始位置,point 阅读全文
posted @ 2024-02-24 22:54 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 思路:依然一是套用回溯模板,但是我们这里用回溯的是i而不是i+1,因为元素可以重复使用,注意for循环里if(sum(path)<=target)的等号不能少。 class Solution { public: vector<int 阅读全文
posted @ 2024-02-23 19:20 SandaiYoung 阅读(5) 评论(0) 推荐(0) 编辑
摘要:组合总和III 题目链接:216. 组合总和 III - 力扣(LeetCode) 思路:仿照昨天的递归模板写的,同样是for循环横向遍历,递归纵向遍历。注意当k>n时要直接跳出,否则会判断栈溢出。 额外发现一个问题就是在累加sum时,用for(auto i:path)sum+=path[i];会出 阅读全文
posted @ 2024-02-22 18:27 SandaiYoung 阅读(21) 评论(0) 推荐(0) 编辑
摘要:回溯理论基础 回溯法,与递归有类似形式,本质是穷举(可能存在剪枝),效率并不高。 回溯的模板: void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtra 阅读全文
posted @ 2024-02-21 13:31 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:669.修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 - 力扣(LeetCode) 思路:本题原来想沿用上一次最后一道题的思路,用删除二叉搜索树特定值节点的方法来解决,但是会报错,找不出问题所在(在评论区也是一堆套用450代码报错的)。只能参考官网答案了。 官网的方法没有用delete,但是思 阅读全文
posted @ 2024-02-20 18:19 SandaiYoung 阅读(3) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 思路:只要利用二叉搜索树特性,只要当前节点的值位于要求的两个节点之间,就必定是我们要找的节点。最简单的一集。 class Solution { public: TreeNode* lowestCom 阅读全文
posted @ 2024-02-19 16:00 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:530.二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) 思路:由于是二叉搜索树,先用中序遍历将节点存入数组中,再遍历数组相邻元素即可。 class Solution { public: void qianxu(TreeNode* root,vecto 阅读全文
posted @ 2024-02-17 21:35 SandaiYoung 阅读(7) 评论(0) 推荐(0) 编辑
摘要:654.最大二叉树 题目链接:654. 最大二叉树 - 力扣(LeetCode) 思路:普通递,每层递归的思想和快排有类似之处,同时终止条件也和快排相似。但我的写法效率很低。 class Solution { public: TreeNode* traversal(vector<int>nums,i 阅读全文
posted @ 2024-02-17 01:07 SandaiYoung 阅读(8) 评论(0) 推荐(0) 编辑
摘要:513.找树左下角的值 题目链接:513. 找树左下角的值 - 力扣(LeetCode) 思路:利用层序遍历,找到最后一层在输出第一个节点 class Solution { public: int findBottomLeftValue(TreeNode* root) { queue<TreeNod 阅读全文
posted @ 2024-02-16 00:36 SandaiYoung 阅读(4) 评论(0) 推荐(0) 编辑
摘要:110.平衡二叉树 题目链接:110. 平衡二叉树 - 力扣(LeetCode) 思路:判断平衡二叉树,就是判断两个子树的高度差,继而问题转化为了如何求子树的高度——后序遍历(主要卡在了这里)。递归函数返回的是树的高度,同时用-1来表示退出递归(一开始想着用bool型作为返回值,发现函数不好设计)。 阅读全文
posted @ 2024-02-14 16:28 SandaiYoung 阅读(9) 评论(0) 推荐(0) 编辑
摘要:104.二叉树的最大深度 题目链接:104. 二叉树的最大深度 - 力扣(LeetCode)n叉树也一样 思路:我的普通递归方法 class Solution { public: int depth(TreeNode* node,int d){ int l=0,r=0; if(node->left= 阅读全文
posted @ 2024-02-08 23:17 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:层序遍历 102. 二叉树的层序遍历 - 力扣(LeetCode) 思路:结合了昨天学到的标记法,每当一层遍历完,向队列中添加一个NULL标记。遍历到NULL节点表示该层遍历完了,将结果存入结果集中。 /** * Definition for a binary tree node. * struct 阅读全文
posted @ 2024-02-07 19:49 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑
摘要:理论基础 代码随想录 (programmercarl.com) 二叉树的链接形式定义(防忘) struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right 阅读全文
posted @ 2024-02-06 19:45 SandaiYoung 阅读(7) 评论(0) 推荐(0) 编辑
摘要:239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 思路:首先在不考虑 阅读全文
posted @ 2024-02-05 18:14 SandaiYoung 阅读(8) 评论(0) 推荐(0) 编辑
摘要:20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 题目链接:20. 有效的括号 - 力扣(Leet 阅读全文
posted @ 2024-02-03 15:52 SandaiYoung 阅读(5) 评论(0) 推荐(0) 编辑
摘要:堆栈理论基础 代码随想录 (programmercarl.com) STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。栈的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。 我们常用的SGI STL,如 阅读全文
posted @ 2024-02-02 19:08 SandaiYoung 阅读(13) 评论(0) 推荐(0) 编辑
摘要:28. 实现 strStr() 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 题目链接:28. 找出字符串中第一个匹配 阅读全文
posted @ 2024-02-01 18:30 SandaiYoung 阅读(6) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示