- 博客(41)
- 收藏
- 关注
原创 代码随想录训练营day42|62.不同路径、63. 不同路径 II
对于没有障碍物的点:由于机器人只能向下或向右走,故第(i,j)个位置只能由第(i-1,j)向下走或第(i,j-1)向右走。所有dp[i][j] = dp[i-1][j] + dp[i][j-1];而第0行和第0列均只有一种走法,故dp[i][0] = dp[0][j] = 1;同上题一样,dp[i][j]代表从(0,0)到达(i,j)有多少条路径(多少种走法)。所有dp[i][j] = dp[i-1][j] + dp[i][j-1];对于有障碍物的点:dp[i][j] = 0;从上至下,从左至右。
2023-10-17 15:11:10
121
原创 代码随想录训练营day36|1005.K次取反后最大化的数组和、 134. 加油站、135. 分发糖果
1005.K次取反后最大化的数组和(简单。
2023-10-11 15:01:50
146
原创 代码随想录训练营day35|122.买卖股票的最佳时机II、55. 跳跃游戏、 45.跳跃游戏II
122.买卖股票的最佳时机II(中等122.买卖股票的最佳时机II(中等。
2023-10-10 13:31:08
193
原创 代码随想录训练营day32|332.重新安排行程、51.N皇后、37. 解数独
【代码】代码随想录训练营day32|332.重新安排行程、51.N皇后、37. 解数独。
2023-10-07 19:19:59
160
原创 代码随想录训练营day30|93.复原IP地址、78.子集、90.子集II
78.子集(中等)93.复原IP地址 (中等(从未有过如此美妙的开局,请为我欢呼)
2023-10-05 16:27:37
121
原创 代码随想录训练营day23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
leetcode题目链接:669. 修剪二叉搜索树 - 力扣(LeetCode)文章讲解:代码随想录 (programmercarl.com)视频讲解: 你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树_哔哩哔哩_bilibili 首先我们明确,这是一颗二叉树搜索树。如果当前节点cur,cur->val < low,那么该节点的左子树全部都小于low,在删除该节点时,左子树也一并删除。如果cur-> val > high,那么该节点的右子树全部都大于high,
2023-09-28 19:28:31
83
原创 代码随想录训练营day20|654.最大二叉树 、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
以第一棵树为最终根,递归遍历左右子树。如果root1的左/右子树为空,就返回root2的左/右子树,同理相反。按照二叉搜索树的定义,val大于根就向右,小于根就向左。当root==nullptr时就代表没有搜索到。这道题跟前面构造二叉树的题目类似,仅需要在区间分割时注意即可。
2023-09-25 21:45:57
126
1
原创 代码随想录训练营day18|513.找树左下角的值、112. 路径总和 、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
简单简单。
2023-09-25 16:55:40
90
1
原创 代码随想录训练营day17|110.平衡二叉树、257. 二叉树的所有路径、 404.左叶子之和
1.首先我们要用一个vector来保存此次遍历的一条路径上的节点,遇到叶子节点时将整个vector装入答案vector中。我们只能判断一个节点是不是叶子节点,但无法判断一个节点是不是左叶子节点。如果左右子树的高度都不为-1且高度差<=1,那么该节点的高度为1+max(左子树高度,右子树高度)。如果左子树的高度为-1,就代表左子树已经不是平衡二叉树,故继续返回-1,右子树同理。如果左右子树高度差>1,代表该二叉树不是平衡二叉树,返回-1。采用后序遍历,如果一个叶子节点是左叶子节点,就加上它的值。
2023-09-22 17:59:33
116
1
原创 代码随想录训练营day14|144.二叉树的前序遍历、145.二叉树的后序遍历、94.二叉树的中序遍历
先序遍历是中左右,后续遍历是左右中,那么我们只需要调整一下先序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了。对于中序遍历,由于我们遍历到的节点和要处理的节点不是同一个节点,所以就需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。如何标记呢,就是要处理的节点放入栈之后,紧接着放入一个空指针作为标记。这种方法也可以叫做标记法。那我们就将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记。注意:迭代入栈时要先右再左,这样出栈的时候才能先左后右。
2023-09-19 20:14:47
232
原创 代码随想录训练营day11| 20. 有效的括号 、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
栈的经典应用。栈的经典应用,消消乐游戏的原理。要充分利用栈先进后出的性质。
2023-09-16 10:47:59
101
1
原创 代码随想录训练营第10天|232.用栈实现队列、225. 用队列实现栈
一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。两个栈一个作为入队列,一个作为出队列,会比来回push效率高。
2023-09-15 15:59:28
138
1
原创 代码随想录训练营第8天|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、 剑指Offer58-II.左旋转字符串
建议大家平时在leetcode上练习算法的时候本着这样的原则去练习,这样才有助于我们对算法的理解。不要沉迷于使用库函数一行代码解决题目之类的技巧,不是说这些技巧不好,而是说这些技巧可以用来娱乐一下。真正自己写的时候,要保证理解可以实现是相应的功能。我的评价是,读题比解题难。其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。这么做有两个好处:1.不用申请新数组。
2023-09-13 16:55:12
94
1
原创 代码随想录训练营第7天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
本题是经典的哈希表中使用map的题,需要理解为什么使用map以及具体的使用方法。在哈希法中有一些场景就是为数组量身定做的,要注意辨别。对于顺序表问题,如果哈希法的操作较为复杂,则不应只考虑哈希法,也应该考虑顺序表中其他解题方法,如双指针。一样的道理,五数之和、六数之和等等都采用这种解法。
2023-09-12 15:35:58
120
原创 代码随想录训练营第6天|242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1.两数之和
本题是哈希法在数组上的应用,比较适合当作哈希法入门的题目。哈希表的经典应用“查找一个数据在不在表中”,以及要掌握STL的基础操作。202. 快乐数(简单leetcode题目链接:202. 快乐数 - 力扣(LeetCode)代码随想录 (programmercarl.com)本题无视频讲解本题循环跳出条件是隐晦的,要自行判断出sum重复出现就代表不是快乐数这一条件。本题在这四题里第一次出现map,要体会数组、set、map在不同情况下的应用。
2023-09-11 16:49:09
339
原创 代码随想录训练营第4天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II
cur一定指向要操作的两个节点的前一个节点,分别用用temp1,temp2两个节点来保存需要操作的节点,写代码会比较容易。链表也是顺序表,在做题时也可以考虑双指针的方法。对于第二种方法,还是要多想多练才能想到。环形链表双指针思路需要重点掌握。
2023-09-09 15:20:39
481
1
原创 代码随想录训练营第二天|203.移除链表元素、707.设计链表 、206.反转链表
本题最关键是要理解“虚拟头结点”的使用技巧,这个对链表题目很重要。此题目不是很难,但是需要把控的细节很多。包括链表长度的维护,下标对应的位置,是否插入的是头节点等。
2023-09-08 22:32:06
503
1
原创 代码随想录训练营第二天|977.有序数组的平方
两侧双指针的思路。核心思路是滑动窗口(双指针)。j指向的一定是滑动窗口的末位置而不是初位置,如果指向初位置,移动末位置,其实依然为暴力解法。
2023-09-07 20:15:52
577
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅