
LeetCode HOT 100
文章平均质量分 93
本专栏记录LeetCode HOT 100的刷题,同时包含C++和Python的实现,并辅以高质量的讲解,提供评论区答疑。
优惠券已抵扣
余额抵扣
还需支付
¥399.90
¥499.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
「已注销」
这个作者很懒,什么都没留下…
展开
-
【2024】LeetCode HOT 100——图论
这里以DFS为例,DFS不需要开方向数组,不需要队列,实现更为简洁。经典的Flood Fill算法,可BFS也可DFS。如果仿照C++,用列表实现,实际运行效率会很低。为先修课程的要求数。原创 2024-06-29 16:42:54 · 632 阅读 · 0 评论 -
【2024】LeetCode HOT 100——回溯
时我们便得到了一个答案。个右括号组成的所有括号序列中,合法的括号序列有。因为共有卡塔兰数个方案,且构造每个方案需要。是否是回文串,这样就可以在回溯的过程中以。一个括号序列是合法的当且仅当它满足以下条件。而所有的括号序列共有。数组(布尔数组),它代表。为所有可行解的长度之和。是三个字母的数字个数,是四个字母的数字个数。的时间,故时间复杂度为。我们可以预处理出来一个。原创 2024-06-29 14:37:18 · 525 阅读 · 0 评论 -
【2024】LeetCode HOT 100——二分查找
34. 在排序数组中查找元素的第一个和最后一个位置调用即可。原创 2024-06-28 14:54:54 · 385 阅读 · 0 评论 -
【2024】LeetCode HOT 100——堆&栈
最大堆存储较小的一半元素,最小堆存储较大的一半元素。最大堆的堆顶是较小一半元素的最大值,最小堆的堆顶是较大一半元素的最小值。:如果最大堆的元素个数比最小堆多超过1个,则将最大堆的堆顶元素移到最小堆。如果最小堆的元素个数比最大堆多,则将最小堆的堆顶元素移到最大堆。:如果总元素个数为奇数,中位数为最大堆的堆顶。如果总元素个数为偶数,中位数为最大堆的堆顶与最小堆的堆顶的平均值。:如果新元素小于或等于最大堆的堆顶,将其插入最大堆。否则,将其插入最小堆。,我们可以借助计数排序的思想,将其降低至。原创 2024-06-27 16:50:35 · 293 阅读 · 0 评论 -
【2024】LeetCode HOT 100——贪心算法
出发能够到达的最远位置(可以理解为不断拓展右边界),如果。因此,时间复杂度是与价格数组的长度。),不依赖于输入大小。所需的额外空间是常量级别的。首先可以证明,能够跳到的位置一定是。代码只使用了几个额外的变量 (代码中的循环遍历了价格数组。和上一题一样,只不过本题是求。(题目保证可以跳到最后)。我们可以设置两个指针,(可用反证法证明)。原创 2024-06-26 12:06:40 · 314 阅读 · 0 评论 -
【2024】LeetCode HOT 100——技巧
这样的升序对,说明整个序列都是降序的,直接翻转该序列即可。之外每个节点都有一条入边,这意味着图中一定有环。这道题是「荷兰国旗问题」,我们需要维护三个指针。,首先从后往前找到第一个升序的元素对,记为。仍是降序的,我们让这一段变为升序的即可。,说明每个节点都有一条出边,且除了。向左移动,任一时刻,需要满足,重复了不止一次,说明节点。,那么数组的下标范围是从。的入边至少有两条,即。原创 2024-05-29 17:39:51 · 369 阅读 · 1 评论 -
【2024】LeetCode HOT 100——多维动态规划
我们可以枚举回文串的中心,然后从中心开始向两边扩展,并不断更新最大值。回文子串有两种类型,一种是偶数长度的,一种是奇数长度的。枚举中心的时候要同时考虑两种类型的回文串。的最少步数,我们只关注如何从。的最长公共子序列的长度。原创 2024-05-27 19:38:01 · 238 阅读 · 0 评论 -
【2024】LeetCode HOT 100——动态规划
如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到最高总金额。这道题的第一想法可能使用贪心来做,但贪心是会失败的,来看这样一个示例:硬币数组。在两个选项中选择偷窃总金额较大的选项,该选项对应的偷窃总金额即为前。但要注意的是,这是一个只涉及体积,不涉及价值的背包问题。结尾的最长有效括号的长度。的所有子串中,只有它本身是字典中的单词,故取。结尾的最长递增子序列的长度,那么本题答案为。原创 2024-05-26 17:30:19 · 279 阅读 · 0 评论 -
【2024】LeetCode HOT 100——二叉树
的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。首先我们需要了解什么是二叉树的中序遍历:按照访问。原创 2024-04-09 14:29:07 · 223 阅读 · 0 评论 -
【2023】LeetCode HOT 100——链表
那么移动路径形如。原创 2023-08-30 19:28:31 · 563 阅读 · 0 评论 -
【2023】LeetCode HOT 100——矩阵
分别代表右、下、左、上四个方向。每次碰壁或者遇到已经走过的地方,我们需要将方向顺时针旋转。等价于先将图像沿主对角线翻转,然后再图像水平翻转。如果将本题改为逆时针,则。使用方向数组即可实现。原创 2023-08-27 14:23:12 · 810 阅读 · 0 评论 -
【2023】LeetCode HOT 100——普通数组
统计左边的数出现的频率可以用一个哈希表来完成,而对于右边的数,我们可以在一开始初始化一个大的哈希表,然后在枚举的时候减去相应的频率即可。注意,由于遍历到当前区间时至多保存上一个区间,因此遍历结束后最后一个区间不会得到保存,所以我们需要手动保存最后一个区间。的比较,所以排序实际上是先按照第一个元素排序,再按照第二个元素,以此类推。本题和本文的第一题十分相似,只不过第一题只有一个区间,而本题有两个区间。为结尾的连续子数组的最大和,记为。区间内的连续子数组的最大和,记为。区间内的连续子数组的最大和,记为。原创 2023-08-25 18:57:18 · 462 阅读 · 0 评论 -
【2023】LeetCode HOT 100——滑动窗口&子串
的滑动窗口并用哈希表统计这个窗口内的字符频率。在证明了双指针的单调性后,我们就可以使用它了。中的字符频率,一个哈希表用来统计滑动窗口中字符的频率。谈到子数组的和,就可以联想到区间和,而求区间和通常会用到前缀和算法。变量,用来跟踪当前窗口中包含了多少个满足条件的目标字符(即字符串。为右端点的无重复字符的最长子串的左端点,那么按照之前的思路,当。我们枚举子串的右端点。时,如果出现了重复的字符,那么重复的字符必然是。中字符的数量时,表示当前窗口中已经包含了字符串。为右端点的无重复字符的最长子串的左端点,矛盾!原创 2023-08-24 15:58:22 · 671 阅读 · 0 评论 -
【2023】LeetCode HOT 100——双指针
我们可以预处理出前缀最大数组(类似于前缀和数组)和后缀最大数组,这样就可以在。按照「三数之和」的思路,我们会首先对原数组从小到大进行排序,然后枚举第一个数。由于数组是有序的,那么相同的数字必然相邻,因此如果。,那么后两个条件会自动满足,我们只需要确保第一个条件。可以发现,无论移动哪一个指针,并不是和的形式,我们无法使用相向双指针进行处理。思路与三数之和一致,但要注意溢出的情况,需要开。先不考虑重复的问题,首先对原数组排个序,那么。是求和的形式,因此可以使用相向双指针。,那么这两个指针形成的容器的储水量为。原创 2023-08-20 14:28:14 · 439 阅读 · 0 评论 -
【2023】LeetCode HOT 100——哈希
注意到字母异位词按照字典序排列后等于原单词,因此我们可以以原单词为键来记录该单词衍生出的所有字母异位词。」有异曲同工之妙,都是在枚举一个数的同时统计该数左边的情况。的时间内完成,所以我们不能对原数组进行排序。即可,这可以用一个哈希表来记录。为起点的最长连续序列的长度为。考虑枚举数组中的每个数。,以它为起点,尝试匹配。个字符串的最大长度。原创 2023-08-19 01:11:55 · 389 阅读 · 0 评论 -
【2024】LeetCode HOT 100——导航
现已完结。原创 2023-08-18 23:38:37 · 487 阅读 · 0 评论