![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
文章平均质量分 80
Leetcode
码拉松
这个作者很懒,什么都没留下…
展开
-
LeetCode-DFS-图类-中等难度
【代码】LeetCode-DFS-图类-中等难度。原创 2024-05-19 11:00:00 · 213 阅读 · 0 评论 -
LeetCode-DFS-树类-简单难度
本题基于后序遍历进行处理,终止条件为当前节点为空,或者当前节点就是目标节点,所以如果左右子树都有返回值,则说明各自都找到目标节点,那最近公共祖先自然就是当前root节点。另一类情况就是一个为空,一个不为空,言下之意就是,一个找到了目标值,一个未找到目标值,那自然得返回找到目标值的那一个,最后递归逻辑会带着其中一个返回的目标值,与另一个带着其中一个返回的目标值,命中左右子树都不为空的条件,即可返回root。2.优先遍历左右子树,如果左子树为空,则返回右子树的深度,如果右子树为空,则返回左子树的深度。原创 2024-05-07 09:00:00 · 946 阅读 · 0 评论 -
LeetCode-数组-前缀和-中等难度
前缀和是一种利用预处理的方式来减少整体实现复杂度的方法。(i)(i - 1)(i)(i)(0 ~ i)0 < i < j(i ~ j)(j)(i - 1)根据这样的关系,在某些应用场景上我们就可以利用前缀和进行快速求解。原创 2024-03-08 09:15:00 · 894 阅读 · 0 评论 -
LeetCode-数组-定长滑动窗口-中等难度
一般我们在学习滑动窗口时,可以把它分为定长与不定长来针对性练习,滑动窗口实际上也可以看作是双指针,尤其是不定长的滑动窗口,本篇文章主要整理了一些比较有代表性的定长类滑动窗口的题型,以供练习。原创 2024-02-04 09:30:00 · 799 阅读 · 0 评论 -
LeetCode-数组-双指针-中等难度
双指针一般是指利用两个变量,通过在线性的结构上进行遍历来解决某些特定的问题,按照遍历的方式一般多采用:同向遍历,相向遍历两种方式,例如冒泡排序、选择排序、插入排序都是用了两个变量同向遍历来实现,快排则是通过相向遍历来实现。要求可接的雨水处的水量,可以先分别求出位于此处两侧最长柱子的高度,然后取其较短的一根即表示其可接水量的上限,因此完全可以通过不断的左右遍历(收缩较短的柱子)的方式计算出每个位置可接的水量。个后,再进行比较,所以快指针逻辑不变,只需要让慢指针在比较时每次往前取两位即可。左右指针,相向遍历。原创 2024-01-04 14:00:00 · 990 阅读 · 0 评论 -
LeetCode-数组-矩阵问题-中等难度
[toc]原创 2023-12-18 10:00:00 · 1084 阅读 · 0 评论 -
LeetCode-数组-重叠、合并、覆盖问题-中等难度
我认为区间类的题型,大多数考验的是思维能力,以及编码能力,该类题型本身并无什么算法可言,主要是思维逻辑,比如本题实际上你只需要能够总结出重叠与不重叠的含义,再加上一点编码技巧,便可完成。原创 2023-12-09 11:25:22 · 385 阅读 · 0 评论 -
LeetCode-周赛-思维训练-中等难度
整个实现逻辑,实际上就是分别考虑了两种情况,一种是数组中的元素本身可以维持连续性,一种是数组中的元素本身无法维持连续性,需要补齐。在有了前一题的基础上,再来做这一题,就简单了许多,本题可以看作当数组无法构造连续整数,且又未达到。我们先抛开原题不看,可以先完成一道简单的题目,假设现在就给你一个目标值X,问你能够构造出从。数组所包含的元素并不是按照最佳期望给的,但这并不影响整体的解题方式。时,你可以通过添加一些数字,使其满足要求,问你最少需要添加几次。现在,让我们回到原题中,虽然题目中给出的。原创 2023-12-06 20:30:00 · 198 阅读 · 0 评论 -
LeetCode岛屿问题通用解决模板
岛屿类问题,最简单的处理方式就是使用深度优先遍历来解,找到一个陆地后,不断的向其上下左右四个方向进行遍历,直到抵达边界或者水域为止。我们先从一道LeetCode上的题目了解一下一般岛屿类题目的问题场景。通过上面6题,应该可以体会出通用解决模板的套路,无论题目如何变化,其边界判断、水域、陆地判断、上下左右遍历都是非常标准的解决岛屿问题的方式,只要掌握了这个套路,其他无非就是在其基础上演化处理而已。原创 2023-03-22 11:00:00 · 680 阅读 · 0 评论 -
入门二分查找练习题
标准二分查找的模板:定义指向左右下标的边界点。不断的收拢左右下标,直到左下标越过右下标为止。在左右下标之间找中间点,对于偶数个数组来说,找到的是靠左边的位置,如果想找靠右边的位置可以写成。假设有:,找到,找到。如果中间位置是目标值,则直接返回即可。如果中间位置大于目标值,则表明从中间开始,其右边的数一定都大于目标值,所以把右边界指向中间位置的前一个位置,然后继续开始查找即可。如果中间位置小于目标值,则表明从中间开始,其左边的数一定都小于目标值,所以把左边界指向中间位置的后一个位置,然后继续开始查找即可。注意原创 2022-06-18 17:50:27 · 450 阅读 · 0 评论 -
【LeetCode】经典双指针习题
盛最多水的容器题目描述解题思路初始两个指针,一个指向数组第一个元素,一个指向数组最后一个元素,两个指针相隔的区间就可以看作是盛水的容量,当然还会由两个指针指向的较小的数来决定。之后,每次我们移动指向的较小值的指针,并且计算其容量,最终可得出能容纳水的最大值。public int maxArea(int[] height) { int left = 0, right = height.length - 1; int ans = 0; while(left < right){ a.原创 2022-05-31 20:40:13 · 358 阅读 · 0 评论 -
【LeetCode简单算法题】在长度 2N 的数组中找出重复 N 次的元素
一道简单题,开拓思路原创 2022-05-30 09:00:00 · 338 阅读 · 0 评论 -
总结、归类---使用二分处理旋转数组的问题
前言如果要在一个有序的数组中,查找某个元素,那么二分查询是一种非常高效的方式,每一次查找都能过滤掉一半的元素,所以时间复杂度为O(logn)。原创 2021-04-12 08:16:10 · 140 阅读 · 0 评论