![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
#c++刷题笔记
记录做题思路
观鉴词recommend
这个作者很懒,什么都没留下…
展开
-
【c++刷题笔记-数组】day34:01背包问题 二维 、 01背包问题 一维 、416. 分割等和子集
了解背包dp的使用方法和技巧。原创 2024-07-10 11:10:26 · 78 阅读 · 0 评论 -
【c++刷题笔记-动态规划】day33: 62.不同路径 、 63. 不同路径 II 、343. 整数拆分 、96.不同的二叉搜索树
动态规划是由多个重复的子问题组成,如何解决这些子问题就是思考的方向。分析出递推公式和初始化dp数组以及确定遍历顺序。原创 2024-07-09 10:47:44 · 262 阅读 · 0 评论 -
【c++刷题笔记-动态规划】day32: 509. 斐波那契数 、 70. 爬楼梯 、 746. 使用最小花费爬楼梯
理解dp数组的定义,它代表什么很重要。初始化,需要考虑清楚。递推公式需要理解。原创 2024-07-08 12:07:11 · 115 阅读 · 0 评论 -
【c++刷题笔记-贪心】day30:56. 合并区间 、 738.单调递增的数字
贪心算法,需要一定的技巧,覆盖区间可以直接用back()函数修改右边界。修改数字可以使用flag来记录需要修改的数字的下标。原创 2024-07-06 15:19:19 · 202 阅读 · 0 评论 -
【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
区间覆盖问题,先排序,判断好边界。原创 2024-07-05 17:07:03 · 288 阅读 · 0 评论 -
【c++刷题笔记-贪心】day28: 134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列
贪心就是以局部推全局并且没有反例的情况,当遇到不同维度的贪心时,需要分开讨论。原创 2024-07-05 15:04:01 · 373 阅读 · 0 评论 -
【c++刷题笔记-贪心】day27: 122.买卖股票的最佳时机II 、 55. 跳跃游戏 、 45.跳跃游戏II 、 1005.K次取反后最大化的数组和
贪心没有规律。需要总结,从局部最优推到全局最优。原创 2024-07-03 14:17:06 · 185 阅读 · 0 评论 -
【c++刷题笔记-贪心】day26:455.分发饼干 、376. 摆动序列 、53. 最大子序和
贪心题就是需要总结,以小见大。通过局部最优判断出整体最优。原创 2024-07-02 11:21:38 · 122 阅读 · 0 评论 -
【c++刷题笔记-回溯】day25:491.递增子序列 、46.全排列 、47.全排列 II、332.重新安排行程、51.N皇后
回溯去重逻辑需要记清楚,分解大问题为小问题,然后依次解决。回溯不清楚一定要画图理解。原创 2024-07-01 13:37:10 · 182 阅读 · 0 评论 -
【c++刷题笔记-回溯】day24:93.复原IP地址 、 78.子集 、 90.子集II
需要在字符串中加入同一个字符时,使用添加的字符做标记进行分割。子集问题在每次递归开始时统计。去重使用树枝和树层去重逻辑,前一个标记为false时表示是回溯回来的表示在同一层,所以需要去重。原创 2024-06-29 12:01:52 · 143 阅读 · 0 评论 -
【c++刷题笔记-回溯】day23: 39. 组合总和 、40.组合总和II 、 131.分割回文串
选好递归终止条件,了解同一树层和同一树枝。原创 2024-06-28 15:04:09 · 139 阅读 · 0 评论 -
【c++刷题笔记-回溯】day22: 77. 组合 、 216.组合总和III 、 17.电话号码的字母组合
利用好回溯模板,注意结束条件和选择对象。将选取的对象抽象为树结构,画图出来判断出递归的条件。原创 2024-06-27 11:17:13 · 173 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day21: 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树
建树和修改树,可以考虑使用左右子树接受递归的值,达到删除和修改的要求。原创 2024-06-26 16:20:44 · 126 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day20: 235. 二叉搜索树的最近公共祖先 、 701.二叉搜索树中的插入操作 、 450.删除二叉搜索树中的节点
利用好二叉搜索树的特性,二叉树插入的时候只需要在空结点处插入,二叉树搜索删除操作需要判断是否为最左子树。原创 2024-06-25 11:45:28 · 192 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day18: 530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、 236. 二叉树的最近公共祖先
可以用额外结点来接收前一个结点。统计结点频率可以使用一边统计一边更新的方式。把问题划分为多个子问题,在一对一解决。原创 2024-06-24 12:48:35 · 112 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day17: 654.最大二叉树 、 617.合并二叉树 、 700.二叉搜索树中的搜索 、 98.验证二叉搜索树
递归需要做好终止条件和边界条件,合并二叉树需要使用辅助结点来接收值,二叉搜索树的特性是按照中序遍历它的值是有序的。原创 2024-06-23 13:49:25 · 118 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day16: 路径总和 、 从中序与后序遍历序列构造二叉树
理解递归的回溯逻辑,以及用全局变量来接受每次回溯的结果。原创 2024-06-22 15:38:34 · 135 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day15: 110.平衡二叉树 、257. 二叉树的所有路径 、 404.左叶子之和、 222.完全二叉树的节点个数
后序遍历求高度,前序遍历求深度,ans+sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);统计结点的逻辑。原创 2024-06-20 22:31:59 · 318 阅读 · 0 评论 -
【c++刷题笔记-二叉树】day14: 226.翻转二叉树、 101. 对称二叉树 、 104.二叉树的最大深度、 111.二叉树的最小深度
学会使用二叉树的遍历方式,了解深度和高度的区别,根节点到叶子节点的距离为深度,高度是从叶节点数到它的根节点。原创 2024-06-19 21:10:53 · 170 阅读 · 0 评论 -
【c++刷题笔记-栈和队列】day12: 150. 逆波兰表达式求值 、239. 滑动窗口最大值 、 347.前 K 个高频元素
掌握栈和队列的使用,双端队列的特性和优先队列的特性要弄清楚。原创 2024-06-17 12:53:27 · 197 阅读 · 0 评论 -
【c++刷题笔记-栈和队列】day10: 232.用栈实现队列 、225. 用队列实现栈 、20. 有效的括号 、 1047. 删除字符串中的所有相邻重复项
栈是先进后出的线性结构,队列是先进先出的线性结构。两两匹配考虑使用栈。原创 2024-06-15 16:33:36 · 170 阅读 · 0 评论 -
【c++刷题笔记-字符串】day09: 151.翻转字符串里的单词 、卡码网:55.右旋转字符串 、28. 实现 strStr() 、 459.重复的子字符串
掌握字符串反转技巧,重复字符串可以通过s+s进行拼接,如果中间存在s作为s+s的字串则表明改字符串s有重复的子字符串。匹配字符串优先考虑kmp算法,理解kmp算法,先理解next数组,然后再理解的背一个模板,多用几次就熟悉了。原创 2024-06-14 21:15:02 · 158 阅读 · 0 评论 -
【c++刷题笔记-哈希表】day6:454.四数相加II , 383. 赎金信 , 15. 三数之和 ,18. 四数之和
哈希表能很好的解决数组元素匹配的问题发现类似的题目时可以优先考虑哈希表,遇见数组需要求匹配值且改变数组不影响后续操作的时候,优先考虑将数组进行排序和利用双指针进行求解。原创 2024-06-12 16:51:31 · 125 阅读 · 0 评论 -
【c++刷题笔记-哈希表】day06: 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和
初学哈希表,哈希表多用在去重,找对应的数。unoreder_map是以键值对的形式存储,unordered_set是一个集合只能存放键。原创 2024-06-11 21:13:48 · 206 阅读 · 0 评论 -
【c++刷题笔记-链表】day04:24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交 、 142.环形链表II
多使用哨兵结点,这样指针指向会比较清晰,也会方便操作指针。快慢指针技巧,链表有环和求相同的结点的时候可以考虑快慢指针。原创 2024-06-10 17:24:01 · 287 阅读 · 0 评论 -
【c++刷题笔记-链表】day03: leetcode203.移除链表元素 , leetcode707.设计链表 , leetcode206.反转链表
链表基本都可以用虚拟头节点,所以要善用虚拟头结点。链表问题需要定义一个临时节点,尽量不要在原始节点进行操作。需要梳理好指针方向,保存下一个待操作的节点,可以把这个节点当成一个新的链表的头结点使用。原创 2024-06-09 22:37:18 · 134 阅读 · 0 评论 -
【c++刷题笔记-数组】day02:leetcode977. 有序数组的平方、leetcode 209.长度最小的子数组、leetcode 59.螺旋矩阵II
数组写代码的结构很重要,先找出边界,选好遍历方式想清楚再动手。原创 2024-06-07 12:05:16 · 238 阅读 · 0 评论 -
【c++刷题笔记-数组】day01:leetcode704. 二分查找、leetcode27. 移除元素
原地移动数组,易错点在双指针从左向右遍历的时候与后面位置交换的时候记得回退指针,指针重合后就结束循环。最基础的写法,适合没有重复数据的数组左闭右闭[l,r]左闭右开区间[l,r),那边开就往哪边收缩。原创 2024-06-06 21:09:48 · 176 阅读 · 0 评论