自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日5题Day25 - LeetCode 121 - 125

【代码】每日5题Day25 - LeetCode 121 - 125。

2024-06-15 13:01:17 300

原创 每日5题Day24 - LeetCode 116 - 120

【代码】每日5题Day24 - LeetCode 116 - 120。

2024-06-13 16:57:15 504

原创 每日5题Day23 - LeetCode 111 - 115

【代码】每日5题Day23 - LeetCode 111 - 115。

2024-06-12 21:47:24 491 1

原创 每日5题Day22 - LeetCode 106 - 110

【代码】每日5题Day22 - LeetCode 106 - 110。

2024-06-12 11:23:12 475

原创 每日5题Day21 - LeetCode 101 - 105

显然,我们使用栈来递归的速度是很慢的,只要是树,我们就用递归好了,天然有优势(对于每一个节点,面临的问题相同,符合复杂问题分为子问题这一原则)。

2024-06-10 14:48:13 259

原创 每日5题Day20 - LeetCode 96 - 100

【代码】每日5题Day20 - LeetCode 96 - 100。

2024-06-10 14:17:37 407

原创 每日5题Day19 - LeetCode 91 - 95

【代码】每日5题Day19 - LeetCode 91 - 95。

2024-06-09 22:36:48 508

原创 每日5题Day18 - LeetCode 86 - 90

感觉没读懂,一开始我觉得是下面这个做法。

2024-06-08 21:07:38 404

原创 每日5题Day17 - LeetCode 81 - 85

【代码】每日5题Day17 - LeetCode 81 - 85。

2024-06-03 11:56:40 252

原创 每日5题Day16 - LeetCode 76 - 80

【代码】每日5题Day16 - LeetCode 76 - 80。

2024-06-03 00:39:05 213

原创 每日5题Day15 - LeetCode 71 - 75

【代码】每日5题Day15 - LeetCode 71 - 75。

2024-06-02 13:11:19 370

原创 每日5题Day14 - LeetCode 66 - 70

写不来,就用宫水三叶的解法吧。

2024-05-31 12:38:08 221

原创 每日5题Day13 - LeetCode 61 - 65

好讨厌这个题,不写了。

2024-05-31 11:54:21 403

原创 每日5题Day12 - LeetCode 56 - 60

【代码】每日5题Day12 - LeetCode 56 - 60。

2024-05-30 13:33:14 308

原创 每日5题Day11 - LeetCode 51 - 55

【代码】每日5题Day11 - LeetCode 51 - 55。

2024-05-27 17:03:58 255

原创 每日5题Day10 - LeetCode 46 - 50

【代码】每日5题Day10 - LeetCode 46 - 50。

2024-05-22 18:51:18 358

原创 每日5题Day9 - LeetCode 41 - 45

今天这道题没有ac,写不动了,下次再通过吧,先给个半成品下次回来改掉。本题借用:【宫水三叶】的思路来解决的。

2024-05-20 16:45:58 260

原创 每日5题Day8 - LeetCode 36 - 40

题目要求我们进行判断,我们不需要自己填写,所以要一个标志位,来看当前的值是否在行、列、格中出现过,每当这时候可以考虑使用位掩码。

2024-05-20 13:33:20 345

原创 每日5题Day7 - LeetCode 31 - 35

注意这道题的处理逻辑,我们应该走最右边的数i开始,向左遍历找到小于他的数j,然后交换,一定要注意交换后右边序列(j所在位置的后一位)也要满足是升序(因为刚刚已经完成升序了,每次升一点,所有子序列就要满足是最小升序,如果看文字太抽象,请用[2,3,1]这个例子自行模拟)

2024-05-19 22:19:13 269

原创 每日5题Day6 - LeetCode 26 - 30

【代码】每日5题Day6 - LeetCode 26 - 30。

2024-05-17 23:10:40 261

原创 每日5题Day5 - LeetCode 21 - 25

虽然递归也要使用空间,但至少空间消耗比原来低一些,代码则简单太多了。所以我们对于链表、树节点的处理,尽量要考虑递归。这道题不好处理,咱们直接考虑使用优先级队列来做,反正是升序,具体过程交给优先级队列来做,我们就负责把所有的值添加进去。否则两者都存在时,当前node的next的next其实应该是返回比较小的那个值(如果对于链表(树的节点同样如此)使用递归的话,专注于每一个具体节点的行为,我们可以发现。上面的代码用了太多的额外空间了,如果考虑使用递归呢?这样写清爽得多,在子递归中我们也表明了方向。

2024-05-17 18:23:40 437

原创 每日5题Day4 - LeetCode 16 - 20

【代码】每日5题Day4 - LeetCode 16 - 20。

2024-05-17 14:27:25 282

原创 每日5题Day3 - LeetCode 11 - 15

【代码】每日5题Day3 - LeetCode 11 - 15。

2024-05-15 22:17:43 401

原创 每日5题Day2 - LeetCode 6 - 10

【代码】每日5题Day2 - LeetCode 6 - 10。

2024-05-15 09:42:35 253

原创 每日5题Day1 - LeetCode 1-5

每天5道题吧,不多不少,花不了多少时间,能坚持下来应该有收获

2024-05-15 08:18:24 257

原创 代码随想录算法训练营第五十六天|647. 回文子串、516. 最长回文子序列、总结:https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%

LeetCode 647. 回文子串。

2024-03-14 15:13:41 373

原创 代码随想录算法训练营第五十五天|583. 两个字符串的删除操作 、72. 编辑距离 、编辑距离总结篇 、总结:https://programmercarl.com/%E4%B8%BA%E4%BA%86

LeetCode 583. 两个字符串的删除操作。

2024-03-14 14:53:59 330

原创 代码随想录算法训练营第五十四天|392.判断子序列、115.不同的子序列

LeetCode 115.不同的子序列。LeetCode 392.判断子序列。

2024-03-14 14:48:33 434

原创 代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形。

2023-11-27 22:47:01 465

原创 代码随想录算法训练营第五十九天|503. 下一个更大元素 II、42. 接雨水

的基础上,进行循环遍历,因此我们就采用取模的方式来循环。之前好像考虑使用双指针尝试过该题,这次采用单调栈来实现。LeetCode 503. 下一个更大元素 II。LeetCode 42. 接雨水。

2023-11-27 22:31:44 443

原创 代码随想录算法训练营第五十七天|739. 每日温度、496.下一个更大元素 I

先看是示例,题目意思是nums1中每个元素存在与nums2,对nums1中每个元素在nums2中对应位置之后进行判别,找到更大的元素,同样和上一题一样涉及到了位置距离的判别,因此同样使用单调栈。单调栈开始,为什么要用栈,因为栈是先入后出,当我们遍历从前往后的时候,每次遍历的元素都是添加至栈尾,方便我们进行比较,满足条件计算下标差值(因为是求几天后比今天热),不满足就继续走。LeetCode 496.下一个更大元素 I。LeetCode 739. 每日温度。

2023-11-27 22:26:26 525

原创 代码随想录算法训练营第五十三天|1143. 最长公共子序列、1035.不相交的线、53.最大子数组和

和上一题很像,注意状态转移,相同则+1,否则由前面的最大值转移而来。看起来不一样,实际上多读读题,其实就是同一道题啊。LeetCode 1143. 最长公共子序列。LeetCode 1035. 不相交的线。要么加上去,要么重新开始,很简单的DP。LeetCode 53.最大子数组和。

2023-11-27 13:53:11 434

原创 代码随想录算法训练营第五十二天|300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

在上一题目的基础上,要求连续,也就是说如果不连续了,中间小了(不保持递增状态了),则重新讲当前长度定为1,因此我们的dp数组在初始化时就将所有长度初始化为1,因为要递增,因此判断的条件是当前序号的大小大于前一个序号的大小,讲当前长度增加1,也就是dp[i]增加1。递增子序列,就是当前的数大于前一个数,题目要求不改变其余元素顺序,容易想到这像DFS中的选与不选,如果大于前一个就选,否则不选,选了之后再看看长度如何。LeetCode 674. 最长连续递增序列。LeetCode 718. 最长重复子数组。

2023-11-27 12:58:01 432

原创 代码随想录算法训练营第五十天|309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

所谓的冷冻期,就是卖了股票后的第二天不能买入该股票(股票上的N+2,N+1是今天卖明天能买),所以影响到的是递推公式中买股票的情况,也就是状态转移时候第i天的买入是从第i-2天的状态转移过来的。这道题很简单,其实就是在每次卖出的时候都减去该笔交易的手续费就好,每一笔手续费都是固定值fee,所以状态转移方程是dp[i][1] = dp[i-1][0] + prices[i] -fee。LeetCode 309. 买卖股票的最佳时机含冷冻期。LeetCode 714. 买卖股票的最佳时机含手续费。

2023-11-27 10:24:14 344

原创 代码随想录算法训练营第四十九天|123. 买卖股票的最佳时机III 、188. 买卖股票的最佳时机 IV

这个道题和121. 买卖股票的最佳时机 I、122. 买卖股票的最佳时机 II很像,是两题的结合。这又是上一题的一个进阶版,其实我们上一题考虑了两个,这次直接来一个DP数组就OK。LeetCode 123. 买卖股票的最佳时机 III。LeetCode 188. 买股票的最佳时机IV。我们就定义两个数组来实现。

2023-11-26 13:47:04 398

原创 代码随想录算法训练营第四十八天|121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II

DP:定义和上一题一样,但是注意一下中间对于每个位置上拥有股票的最大价值,就应该有一个初始状态了,也就是dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])。贪心:这道题对该只股票可以重复购买,因此我们贪心做法可有如此思路:不断计算当前价格与前一天价格的差值,如果大于0(涨了)就放在股票账户上,小于0(跌了)就不计入了。DP的话,注意二维DP的列,当为0的时候表示为买了股票的账户最大价值,1表示为没买股票的账户最大价值,详见注释。

2023-11-26 12:38:38 473

原创 代码随想录算法训练营第四十七天|198. 打家劫舍、213. 打家劫舍II、337. 打家劫舍III

同样的,dp[n]代表,偷前n家的时候所能偷到的最高金额,递推公式是dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])第一次打家劫舍,来个简单一些的,无非就是偷了当前这家偷不了下一家,因此dp[n]代表,偷前n家的时候所能偷到的最高金额,递推公式是dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])2)确定递推公式:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])4)确定遍历的数:边界为2,到n。

2023-11-25 21:42:08 519

原创 代码随想录算法训练营第四十六天|139.单词拆分、背包问题总结

这道题使用完全背包来实现,我们首先考虑字符串是否可以由字符串列表组成,因此dp数组大小为n + 1 ,其意义是,在n个位置时是否能拼接成功。因此,当前n状态由前面状态所转移确定。2)确定递推公式:我们把n个数的状态,看作i之前j到i的字母是否能在字符串列表中存在。1)确定dp数组下标与值的关系:处于n位时是否能拼接成功。3)确定初始值:dp[0]为1,没得选。LeetCode 139. 单词拆分。4)确定遍历的数:注意一下边界问题。

2023-11-25 11:15:43 542

原创 代码随想录算法训练营第四十五天|57. 爬楼梯、322.零钱兑换、279. 完全平方数

这道题使用完全背包来实现,要求的组成整数amount的最小硬币组合数,因此dp数组大小为n + 1 ,其意义是,在n阶时最小的硬币数量,因此,当前n状态等于前面状态的最小值。2)确定递推公式:dp[i] = min(dp[i], dp[i - j ** 2] + 1) (后面这个意思是从前j**2的位置递推过来,加上一个完全平方数)2)确定递推公式:dp[i] = min(dp[i], dp[i - coin] + 1) (后面这个意思是从前coin的位置递推过来,加上一个硬币数)

2023-11-25 10:46:33 439

原创 代码随想录算法训练营第四十三天|518. 零钱兑换II、377. 组合总和 IV

因此对于该题,我们考虑一下,和上面那刀分而治之挺像的,永远关注与当前的选择,当前能选的全部选进去。2)确定递推公式:我们把n个数组成看作1与n-1个组成,使用分而治之的思路来处理,dp[i] += dp[i - coin]2)确定递推公式:我们把n个数组成看作1与n-1个组成,使用分而治之的思路来处理,dp[i] += dp[i - num]1)确定dp数组下标与值的关系:满足凑出总金额的组合数。1)确定dp数组下标与值的关系:满足凑出的组合数。3)确定初始值:dp[0]为1,没得选。

2023-11-24 00:42:21 353

空空如也

空空如也

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

TA关注的人

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