自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 146 LRU缓存

定义一个双向链表,通过双向链表来达到时间复杂度为O(1)的操作。

2023-12-11 23:03:33 35

原创 1993 树上的操作

【代码】1993 树上的操作。

2023-12-10 22:00:59 38

原创 2591 将钱分给最多的儿童

【代码】2591 将钱分给最多的儿童。

2023-12-09 12:38:34 34

原创 2560 打家劫舍Ⅳ

需要转变题意,题意是:需要找到在偷k个房子时,偷到的房子中最大金额的房子的值最小。因此,当偷的房子逐渐增多时,偷到的金额是保持递增的,所以采用二分法来选取。通过限定房子的个数来判断,使用偷到的最小房子数来作为二分终止条件。

2023-12-07 22:07:50 19

原创 337 打家劫舍Ⅲ

直接使用dfs暴力的话会超时,因此使用记忆化搜索储存起来,或者采用数组的形式来存储。

2023-12-03 16:37:23 24

原创 213 打家劫舍Ⅱ

和打家劫舍类似,本题可以复用打家劫舍中的思路,唯一不同的是将这个房屋圈变成两端,分别是。这两段,然后取两端中的最大值。

2023-12-03 15:44:19 22

原创 198 打家劫舍

每一个后续的状态都可以由前一个或者前几个状态来推断得出,因此,采用动态规划的方式来计算每一步的状态,从而得到所需的结果。

2023-12-03 13:21:38 21

原创 2596 巡查骑士解决方案

对于这种条件判断的题目,每一个节点的判断都与上一个节点类似,因此使用深度遍历的方式来循环判断每一个节点,根据题意进行遍历判断即可。

2023-12-03 13:13:26 19

原创 1462 课程表Ⅳ【leetcode每日一题系列】

如果直接计算会超时,因此需要建立邻接矩阵,将计算好的结果存在邻接矩阵中。步骤如下:1.建立邻接矩阵,将所有课程的前置课程放在动态数组中。2. 建立条件判断矩阵,将已经访问的节点置为true,从而减少遍历时间。3. 深度遍历,先判断节点是否访问,再进行下一步。4. 对每个访问的节点判断其邻接矩阵中的点,进行深度遍历,同时将访问的节点与前置节点直接的条件置为true,同时判断间接的先决条件。

2023-11-11 18:34:20 22

原创 630 课程表Ⅲ【leetcode每日一题】

对课程截止时间进行排序,维护一个时间来表示当前所消耗的时间。每次超出时间时,将最长时间的课程给取消。

2023-11-11 16:38:39 25

原创 210 课程表Ⅱ

【代码】210 课程表Ⅱ。

2023-10-23 20:21:13 32

原创 207 课程表

根据题意可知,课程与前置课程之间存在一条对应关系,即需要先完成所有前置课程,才能学习当前课程。如图中所示时,会形成一个有向环图,这时候就无法完成所有课程的学习。因此,需要采用深度遍历来判断点是否已经被使用。

2023-10-16 15:46:27 35

原创 449 序列化和反序列化二叉树

由于是二叉搜索树的原因,当知道二叉树的前序或者后序遍历之后,就能排序得到二叉树的中序遍历。

2023-10-07 17:35:28 25

原创 1921 消灭怪物的最大数量

*而我们每一分钟只能射杀一个怪物,因此我们将到达时间排序,当到达时间小于当前分钟时,表示守卫失败,返回击杀的怪物的最大数量。若距离为1,速度为1,则应当在第一分钟时到,若距离不减1时,是在第二分钟时到。当怪物的到达时间较晚时,我们可以通过射杀的方式来射杀怪物,若怪兽到达时间较短,则会失效。

2023-09-23 17:02:07 27

原创 2511 最多可以摧毁的敌人城堡数【leetcode每日一题系列】

小技巧:单指针遍历,记录状态。

2023-09-20 19:46:52 38

原创 2240 买钢笔和铅笔的方案数【leetcode每日一题系列】

【代码】2240 买钢笔和铅笔的方案数【leetcode每日一题系列】

2023-09-03 19:23:24 57

原创 1761 一个图中连通三元组的最小度数

看不懂,直接暴力解法保存所有连通三元组,再遍历三元组的度数,取最小的即可。

2023-09-03 17:33:54 26

原创 1654 到家的最少跳跃次数【leetcode每日一题系列】

广度遍历时需要记录前一次是向前跳还是向后跳。维护一个数组作为被访问点。

2023-09-03 17:01:52 85

原创 823 带因子的二叉树【leetcode每日一题系列】

对有序数组遍历时,通过定义一头一尾的指针进行遍历即可,因为数字都不重复,也不存在重复问题。感觉无从下手,此题题为二叉树实际是数组,不需要用到树。

2023-08-29 17:18:16 28

原创 57 插入区间【leetcode每日一题系列】

此时后续的区间都不会与新区间产生交集,因此,通过状态函数判断合并后的区间是否插入:若没插入,则先插入合并区间,保持有序性;若已插入,直接插入后续的区间即可。直接调用昨天的合并区间,先将要合并的区间加入原数组,再调用昨天的方法进行处理,能求解但效率低。由于是排序好的区间,可以找出与要插入区间相交的所有区间来将所有区间进行合并,从而得到答案。4.循环结束后判断状态函数,若没插入合并区间,此时插入即可。1.遍历原区间,令遍历到的区间为。,来判断是否已插入新区间。,产生了交集,则合并区间。

2023-08-28 11:24:27 32 1

原创 56 合并区间【leetcode每日一题】

合并区间,主要考虑需要合并区间的左边和右边。

2023-08-28 09:16:10 35 1

原创 228 汇总区间【leetcode每日一题系列】

【代码】228 汇总区间【leetcode每日一题系列】

2023-08-27 21:04:29 94

原创 1448 统计二叉树中好节点的数目【leetcode每日一题系列】

想到二叉树就想到递归,通过只考虑某一个节点的状态,并记录沿途的最大值,来判断即可。

2023-08-27 20:58:52 47

原创 1267 统计参与通信的服务器【leetcode每日一题系列】

2.当某一行(某一列)存在两个或以上服务器时,该行(列)中所有服务器都能与其他服务器通信。则可通过分别按行和按列来进行计算该行或列上服务器的数量,使用数组进行保存,最后统计即可。1.若某一行(某一列)只存在一个服务器,则该服务器无法与其他服务器进行通信。

2023-08-27 20:55:47 26

原创 849到最近的人的最大距离【leetcode每日一题系列】

2.如果前后都不为哨兵,则需要在距离中除2,表示离其中之一最大的距离。1.如果前一个1为哨兵或者后一个1为哨兵,则最大距离就不需要除2。

2023-08-26 15:12:25 41

原创 2337 移动片段得到字符串【leetcode每日一题系列】

利用双指针进行循环判断即可,需要充分考虑边界条件和指针取值。分别往左右移动到两旁,再判断字符串是否相等,后来发现。字符串是无法变动的,即**字符串进行操作,将字符串中。

2023-08-23 10:55:50 31

原创 2236 判断根节点是否等于子节点之和【leetcode每日一题系列】

一开始以为是简单递归,没想到递归都用不到,就是三个节点,再次陷入沉思…

2023-08-22 16:44:34 32 1

原创 2235 两整数相加【leetcode每日一题系列】

【代码】2235 两整数相加【leetcode每日一题系列】

2023-08-22 16:39:04 32 1

原创 1388 3n块披萨【leetcode每日一题系列】

采用动态规划的思路来解决,由于是环形的动态规划,则进行两次计算,分别计算从。每次选取一块披萨时,都将披萨的相邻两片选取中,其实也就是每次选取。,即当选取了某一块披萨时,下一次选取不能选其相邻的披萨。中取披萨的最大值,再取最大即可得到答案。,不然会导致披萨的选取次数减少而错误(最近被披萨搞麻了,连着两个。通过这时可以看出其实就是一个。注意在传参数时需要对数组长度。: 看了好久才看出来)

2023-08-22 16:33:06 53 1

原创 1444 切披萨的方案数【leetcode每日一题系列】

采用对角顶点来定义每次处理的不同矩形,矩形的左上角会随着不断的切割发生变化,而右下角会保持不变,因此,只需要传递给方法体左上角的坐标值,就可以知道矩形的形状。时,需要切割的次数已经用完,只需要判断剩下的矩形中是否有苹果,若有,则表示这种切披萨的方式可行,返回1;每次切完西瓜后,都会剩下一个矩形,与原有型状类似,因此可以采用回溯递归的方式来判断。若切到0-1之间的坐标,则下一步切的矩形左上角为[1,0]若切到1-2之间的坐标,则下一步切的矩形左上角为[2,0]当选择横向切时,会将上层的披萨送人,因此从。

2023-08-21 14:38:20 57 1

原创 2682 找出转圈游戏输家【leetcode每日一题系列】

通过模拟题中所分析的过程,得到结果,注意第一个小朋友第一次传出球时就已经算接到了一次球。

2023-08-18 11:13:51 42 1

原创 833 字符串中的查找与替换【leetcode每日一题系列】

主要是如何满足同时替换的问题,如上图中所示,在替换时字符串的长度发生了变化,因此若按照索引进行替换时会出错。题中提出了保证测试数据不会出现重叠冲突,因此思路就是常规进行匹配然后替换。中需要替换的元素的下标以及需要替换的长度,由于不会产生冲突,且无法知道。同时进行替换,即可得到同步替换的结果。根据键值对储存需要替换的下标以及替换的字符串。进行匹配,若存在相同字符串项,则使用。是否进行了排序,因此在得到。题目较长,主要是遍历长度为。之后对元素进行排序。中的需要替换的下标,

2023-08-17 10:16:15 25 1

原创 88合并两个有序数组

尾部来添加或者移动元素,从而达到不使用其他数组来增加空间复杂度的目的。的长度已经是合并之后数组的长度,且后面的数都为。

2023-08-15 21:25:07 14 1

原创 23 合并k个升序链表【Leetcode每日一题系列】

采用分治的思想来处理,可以先合并两个链表,之后循环合并这两个链表即可,则思路可转变为合并两个升序链表。3.此外,还有两个需要合并的链表,我将他们表示为。,该指针指向下一个要插入的链表节点。链表不会变动,永远指向头节点。再次比较重复上述操作,此时。1.首先定义一个链表。表示合并之后的链表,

2023-08-15 20:58:07 24 1

原创 1572 矩阵对角元素和【leetcode每日一题系列】

矩阵主对角线上的元素下标相同,矩阵副对角线上的元素之和为矩阵的行数或者列数。的行列为奇数时,需要减去重复计算的最中间数;的行列为偶数时,不需要计算。

2023-08-12 18:58:53 27 1

原创 1289 下降路径最小和【leetcode每日一题系列】

由于在遍历时进行了重复遍历,每次寻找某行最小值时都需要遍历一遍上一行的值,增加了时间复杂度,可以先行记录下上一行的最小值。之后,更新三个值即可,此时可使时间复杂度降为。如图所示为一个4*4的矩阵,我们定义。当i为0时,表示矩阵第一行,此代码的时间复杂度为。

2023-08-12 00:27:49 100 1

原创 1281 整数的各位积和之差【leetcode每日一题系列】

【代码】1281 整数的各位积和之差【leetcode每日一题系列】

2023-08-09 20:18:44 91 1

原创 1749 任意子数组和的绝对值的最大值【leetcode每日一题系列】

result = max-min = -nums[j+1]-nums[j+2]-... -nums[i] (当i>j时,此时可理解为全为负数);result = max-min = nums[i+1]+nums[i+2]+... +nums[j] (当j>i时);因此,要求result,只需要求子序列的最大正数和减去最小负数和。采用前缀和维护数组,题目中子数组为连续的子序列,即求连续子序列中。result = 子序列中正数和 - 子序列中负数和。

2023-08-09 00:00:13 163 1

原创 344 反转链表【leetcode每日一题系列】

原地修改,简单双指针写法。

2023-08-07 22:48:48 24 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除