頔枫
码龄7年
求更新 关注
提问 私信
  • 博客:85,755
    社区:134
    85,889
    总访问量
  • 167
    原创
  • 578
    粉丝
  • 80
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:澳大利亚
加入CSDN时间: 2019-07-23

个人简介:hello world选手,熟悉C++的拼写,熟练掌握windows/linux系统的开关机。

博客简介:

baimaozi_007的博客

查看详细资料
个人成就
  • 获得854次点赞
  • 内容获得14次评论
  • 获得707次收藏
  • 博客总排名2,381,330名
创作历程
  • 53篇
    2024年
  • 115篇
    2023年
成就勋章
TA的专栏
  • 算法训练营
    163篇
  • FPGA
    1篇
  • 机器学习
    1篇
  • 科研杂谈
    1篇
  • C++基础知识
    2篇

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 2

TA参与的活动 0

兴趣领域 设置
  • 编程语言
    c++
  • 嵌入式
    嵌入式硬件
  • 网络空间安全
    web安全
创作活动更多

编程达人挑战赛·第12期

作为写代码的你,是否也渴望被更多人看到?技术人员普遍有一个共性——明明技术很强,却没人知道你做了什么;花了很多时间踩坑,却没人因你少走弯路;脑子里有一堆干货,但却不懂如何有效地输出。 在如今写代码的人越来越多的时代,能够清晰表达自己思路与技术的人却少之又少。 因此,我们发起了这个【编程达人挑战赛】——帮助你将代码变成作品,将技术转化为真正的价值,同时激励更多的人坚持写作与分享。 注:活动细则介绍请看此贴:[https://bbs.csdn.net/topics/619791811](https://bbs.csdn.net/topics/619791811)。

947人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

代码随想录算法训练营总结

又一次刷完代码随想录,有些知识点逐渐变得清晰,再做一些新题的时候,也逐渐有了一些思路。接下来要继续努力,争取在秋招的时候,拿一个好offer!
原创
博文更新于 2024.04.22 ·
581 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

代码随想录算法训练营三刷day60 | 单调栈 之 84.柱状图中最大的矩形

三刷day6084.柱状图中最大的矩形 84.柱状图中最大的矩形 题目链接 解题思路: 本地单调栈的解法和接雨水的题目是遥相呼应的。 42. 接雨水是找每个柱子左右两边第一个大于该柱子高度的柱子,而本题是找每个柱子左右两边第一个小于该柱子的柱子。 这里就涉及到了单调栈很重要的性质,就是单调栈里的顺序,是从小到大还是从大到小。 在题解42. 接雨水 中接雨水的单调栈从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。 那么因为本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)
原创
博文更新于 2024.04.20 ·
606 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营三刷day59 | 单调栈之 503.下一个更大元素II 42. 接雨水

因为一旦发现添加的柱子高度大于栈头元素了,此时就出现凹槽了,栈头元素就是凹槽底部的柱子,栈头第二个元素就是凹槽左边的柱子,而添加的元素就是凹槽右边的柱子。如果当前遍历的元素(柱子)高度等于栈顶元素的高度,要跟更新栈顶元素,因为遇到相相同高度的柱子,需要使用最右边的柱子来计算宽度。如果当前遍历的元素(柱子)高度小于栈顶元素的高度,就把这个元素加入栈中,因为栈里本来就要保持从小到大的顺序(从栈头到栈底)。当前遍历的元素i,就是凹槽右边的位置,下标为i,对应的高度为height[i](就是图中的高度3)。
原创
博文更新于 2024.04.20 ·
1153 阅读 ·
28 点赞 ·
0 评论 ·
18 收藏

代码随想录算法训练营三刷day58 | 单调栈之 739. 每日温度 496.下一个更大元素 I

更直白来说,就是用一个栈来记录我们遍历过的元素,因为我们遍历数组的时候,我们不知道之前都遍历了哪些元素,以至于遍历一个元素找不到是不是之前遍历过一个更小的,所以我们需要用一个容器(这里用单调栈)来记录我们遍历过的元素。通过以上过程,大家可以自己再模拟一遍,就会发现:只有单调栈递增(从栈口到栈底顺序),就是求右边第一个比自己大的,单调栈递减的话,就是求右边第一个比自己小的。即:如果求一个元素右边第一个更大元素,单调栈就是递增的,如果求一个元素右边第一个更小元素,单调栈就是递减的。
原创
博文更新于 2024.04.18 ·
816 阅读 ·
20 点赞 ·
0 评论 ·
29 收藏

代码随想录算法训练营三刷 day57 | 动态规划之 647. 回文子串 516.最长回文子序列

题目链接 解题思路: 动规五部曲:如果大家做了很多这种子序列相关的题目,在定义dp数组的时候 很自然就会想题目求什么,我们就如何定义dp数组。绝大多数题目确实是这样,不过本题如果我们定义, 为 下标i结尾的字符串有 dp[i]个回文串的话,我们会发现很难找到递归关系。 和 , 看上去都没啥关系。所以我们要看回文串的性质。 如图: 我们在判断字符串S是否是回文,那么如果我们知道 ,, 这个子串是回文的,那么只需要比较 和这两个元素是否相同,如果相同的话,这个字符串s 就是回文串。那么此时我们是不是能找到一种
原创
博文更新于 2024.04.17 ·
679 阅读 ·
10 点赞 ·
0 评论 ·
14 收藏

代码随想录算法训练营三刷day56 | 动态规划之 583. 两个字符串的删除操作 72. 编辑距离

所以遍历的时候一定是从上到下,从左到右,这样保证dp[i][j]可以根据之前计算出来的数值进行计算。为结尾的字符串word1要删除多少个元素,才能和word2相同呢,很明显。位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。为结尾的字符串word1,和空字符串word2,最近编辑距离为。word2添加一个元素,相当于word1删除一个元素,例如。,是不是就达到两个元素都删除的效果,即。为结尾的字符串word2,最近编辑距离为。为结尾的字符串word2,最近编辑距离为。
原创
博文更新于 2024.04.16 ·
753 阅读 ·
19 点赞 ·
0 评论 ·
12 收藏

代码随想录算法训练营三刷day55 | 动态规划之子序列 392.判断子序列 115.不同的子序列

例如: s:bagg 和 t:bag ,s[3] 和 t[2]是相同的,但是字符串s也可以不用s[3]来匹配,即用s[0]s[1]s[2]组成的bag。与 字符串s的长度相同说明:s与t的最长相同子序列就是s,那么s 就是 t 的子序列。是以下标i为结尾的字符串s和以下标j为结尾的字符串t,初始化就比较麻烦了。表示以下标i-1为结尾的字符串,与空字符串的相同子序列长度,所以为。:空字符串s可以随便删除元素,出现以j-1为结尾的字符串t的个数。为结尾的s,删除所有元素,出现空字符串的个数就是1。
原创
博文更新于 2024.04.15 ·
1177 阅读 ·
19 点赞 ·
0 评论 ·
8 收藏

代码随想录算法训练营三刷day53 | 动态规划之子序列 1143.最长公共子序列 1035.不相交的线 53. 最大子序和

题目链接 解题思路: 动规五部曲分析如下::长度为的字符串text1与长度为的字符串text2的最长公共子序列为主要就是两大情况: 与 相同, 与 不相同如果 与 相同,那么找到了一个公共元素,所以;如果 与 不相同,那就看看与的最长公共子序列 和 与的最长公共子序列,取最大的。即:代码如下: 3.dp数组如何初始化 先看看应该是多少呢?和空串的最长公共子序列自然是0,所以;同理也是0。其他下标都是随着递推公式逐步覆盖,初始为多少都可以,那么就统一初始为0。代码: 4.确定遍历顺序 从递推公式,可以看出,
原创
博文更新于 2024.04.14 ·
684 阅读 ·
20 点赞 ·
0 评论 ·
16 收藏

代码随想录算法训练营三刷day52 | 动态规划之子序列 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度为什么一定表示 “以nums[i]结尾的最长递增子序” ,因为我们在做递增比较的时候,如果比较nums[j]和nums[i]的大小,那么两个递增子序列一定分别以nums[j]为结尾 和nums[i]为结尾, 要不然这个比较就没有意义了,不是尾部元素的比较那么 如何算递增呢。
原创
博文更新于 2024.04.12 ·
442 阅读 ·
5 点赞 ·
0 评论 ·
5 收藏

代码随想录算法训练营三刷day51 | 动态规划 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

保持卖出股票状态(状态二),这里其实从 「状态二」的定义来说 ,很难明确应该初始多少,这种情况我们就看递推公式需要我们给他初始成什么数值。(即第0天的状态二)应该初始成多少,只能初始为0。最后结果是取 状态二,状态三,和状态四的最大值,不少同学会把状态四忘了,状态四是冷冻期,最后一天如果是冷冻期也可能是最大值。出现冷冻期之后,状态其实是比较复杂度,例如今天买入股票、今天卖出股票、今天是冷冻期,都是不能操作股票的。昨天一定是持有股票状态(状态一),今天卖出。今天卖出了股票(状态三),同上分析,
原创
博文更新于 2024.04.11 ·
756 阅读 ·
11 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营三刷 day50 | 动态规划 之 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

第二次买入依赖于第一次卖出的状态,其实相当于第0天第一次买入了,第一次卖出了,然后再买入一次(第二次买入),那么现在手头上没有现金,只要买入,现金就做相应的减少。第二次买入依赖于第一次卖出的状态,其实相当于第0天第一次买入了,第一次卖出了,然后在买入一次(第二次买入),那么现在手头上没有现金,只要买入,现金就做相应的减少。此时还没有买入,怎么就卖出呢?,表示的是第i天,买入股票的状态,并不是说一定要第i天买入股票,这是很多同学容易陷入的误区。,表示的是第i天,买入股票的状态,并不是说一定要第i天买入股票。
原创
博文更新于 2024.04.10 ·
408 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营三刷 day49 | 动态规划 之121 买卖股票的最佳时机 122 买卖股票的最佳时机II

表示第i天持有股票所得最多现金 ,这里可能有同学疑惑,本题中只能买卖一次,持有股票之后哪还有现金呢?注意这里说的是“持有”,“持有”不代表就是当天“买入”!也有可能是昨天就买入了,今天保持持有的状态。的唯一区别是本题股票可以买卖多次了(注意只有一只股票,所以再次购买前要出售掉之前的股票)表示第0天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以。其实一开始现金是0,那么加入第i天买入股票现金就是。表示第0天不持有股票,不持有股票那么现金就是0,所以。应该选所得现金最大的,所以。
原创
博文更新于 2024.04.09 ·
545 阅读 ·
5 点赞 ·
0 评论 ·
12 收藏

代码随想录算法训练营三刷 day48 |动态规划之 198打家劫舍 213打家劫舍II 337打家劫舍III

题目链接 解题思路: 当前状态和前面状态会有一种依赖关系,那么这种依赖关系都是动规的递推公式。 动规五部曲分析如下::考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为。决定的因素就是第i房间偷还是不偷。如果偷第i房间,那么 ,即:第房一定是不考虑的,找出下标(包括i-2)以内的房屋,最多可以偷窃的金额为 加上第i房间偷到的钱。如果不偷第i房间,那么,即考 虑房,(注意这里是考虑,并不是一定要偷i-1房,这是容易混淆的点)然后取最大值,即;从递推公式;可以看出,递推公式的基础就是 和 从的定义上来讲, 一
原创
博文更新于 2024.04.08 ·
1012 阅读 ·
16 点赞 ·
0 评论 ·
23 收藏

代码随想录算法训练营三刷day46 | 动态规划之139.单词拆分

apple”, “pen” 是物品,那么我们要求 物品的组合一定是 “apple” + “pen” + “apple” 才能组成 “applepenapple”。“apple” + “apple” + “pen” 或者 “pen” + “apple” + “apple” 是不可以的,那么我们就是强调物品之间顺序。而本题其实我们求的是排列数,为什么呢。解题思路:单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。题目中说是拆分为一个或多个在字典中出现的单词,所以这是完全背包。
原创
博文更新于 2024.04.06 ·
938 阅读 ·
35 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营三刷 day45 | 动态规划 之 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

所以本题的两个for循环的关系是:外层for循环遍历物品,内层for遍历背包或者外层for遍历背包,内层for循环遍历物品都是可以的!都要选最小的,所以非0下标的dp[j]一定要初始为最大值,这样dp[j]在递推的时候才不会被初始值覆盖。所以本题外层for遍历背包,内层for遍历物品,还是外层for遍历物品,内层for遍历背包,都是可以的!解题思路:完全平方数就是物品(可以无限件使用),凑个正整数n就是背包,问凑满这个背包最少有多少物品。表示 和为0的完全平方数的最小数量,那么dp[0]一定是0。
原创
博文更新于 2024.04.06 ·
2203 阅读 ·
56 点赞 ·
0 评论 ·
42 收藏

代码随想录算法训练营三刷day44 | 动态规划之 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

本题中我们是外层for循环遍历物品(钱币),内层for遍历背包(金钱总额),还是外层for遍历背包(金钱总额),内层for循环遍历物品(钱币)呢?在上面的讲解中完全背包的两个for循环的先后顺序都是可以的。因为纯完全背包求得装满背包的最大价值是多少,和凑成总和的元素有没有顺序没关系,即:有顺序也行,没有顺序也行!纯完全背包是凑成背包最大价值是多少,而本题是要求凑成总金额的物品组合个数!本题要求的是排列,那么这个for循环嵌套的顺序可以有说法了。背包容量的每一个值,都是经过 1 和 5 的计算,包含了。
原创
博文更新于 2024.04.03 ·
888 阅读 ·
17 点赞 ·
0 评论 ·
23 收藏

代码随想录算法训练营三刷day43 | 动态规划之1049. 最后一块石头的重量 II 494. 目标和 474.一和零

题目链接本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。本题物品的重量为stones[i],物品的价值也为stones[i]。对应着01背包里的物品重量weight[i]和 物品价值value[i]。
原创
博文更新于 2024.04.03 ·
991 阅读 ·
28 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营三刷day42 | 动态规划之背包问题 416. 分割等和子集

那么如果背包容量为target, dp[target]就是装满 背包之后的重量,所以 当 dp[target] == target 的时候,背包就装满了。01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);套到本题,dp[j]表示 背包总容量(所能装的总重量)是j,放进物品后,背的最大重量为dp[j]。01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。从dp[j]的定义来看,首先dp[0]一定是0。
原创
博文更新于 2024.04.02 ·
834 阅读 ·
21 点赞 ·
0 评论 ·
14 收藏

代码随想录算法训练营三刷day41 | 动态规划之 343. 整数拆分 96.不同的二叉搜索树

从递归公式上来讲,dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量] 中以j为头结点左子树节点数量为0,也需要dp[以j为头结点左子树节点数量] = 1, 否则乘法的结果就都变成0了。j的结束条件是 j < i - 1 ,其实 j < i 也是可以的,不过可以节省一步,例如让j = i - 1,的话,其实在 j = 1的时候,这一步就已经拆出来了,重复计算,所以 j < i - 1。,就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。
原创
博文更新于 2024.04.01 ·
731 阅读 ·
26 点赞 ·
0 评论 ·
24 收藏

代码随想录算法训练营三刷day39 |动态规划 之 62.不同路径 63. 不同路径II

因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。表示啥,是从(0, 0)的位置到(i - 1, j)有几条路径,dp[i][j - 1]同理。一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。:表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。,因为dp[i][j]只有这两个方向过来。
原创
博文更新于 2024.03.30 ·
1372 阅读 ·
32 点赞 ·
0 评论 ·
14 收藏
加载更多