自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法营总结

备考的几个月确实感觉过的很快,回想起来半年的时间都没有在脑海中留下多少痕迹,我知道自己的算法能力因为缺少系统化的学习显得很薄弱,于是在一月份果断加入了算法营。虽然一刷完再回首望,似乎有些知识已经模糊了一些,但是两个月的坚持不懈打卡也在无声中提高了我的编程基础能力,增强了我对数据结构的理解。后面又继续像无头苍蝇一样学了一个月算法,想着只要能有一家公司要我就行也没管是做什么内容的,在五月份的时候我终于找到了一家小公司实习,但接触的也就是数据标注一类的杂活。实习了两个月,到七月底,因为一些原因,我结束了实习。

2026-03-21 15:55:31 173

原创 代码随想录算法营第六十天|97. 小明逛公园、127. 骑士的攻击

【代码】代码随想录算法营第六十天|97. 小明逛公园、127. 骑士的攻击。

2026-03-21 15:19:27 12

原创 代码随想录算法营第五十九天|94. 城市间货物运输 I、95. 城市间货物运输 II、96. 城市间货物运输 III

Bellman_ford之单源有限最短路: 限制最多经过k个城市,即最多要经过k+1个边。所以要松弛k + 1次。同时每次更新的时候要确保minDist数组的含义是从原点出发经过i条边以内到达节点的最短距离,用一个copy_dis数组来限制实际边数。Bellman_ford之判断负权回路: 多松弛一次若是miniDist有改变则说明有回路。

2026-03-21 14:35:40 19

原创 代码随想录算法营第五十八天|94. 城市间货物运输 I

【代码】代码随想录算法营第五十八天|94. 城市间货物运输 I。

2026-03-19 22:29:08 15

原创 代码随想录算法营第五十七天|117. 软件构建、47. 参加科学大会

拓扑排序就是每次找入度为0的节点,记录删除后将对应节点入度相减。很朴素的dijkstra。

2026-03-17 10:17:15 13

原创 代码随想录算法营第五十六天|53. 寻宝

Prim算法版本:遍历节点,利用minDist更新目前节点距离构成的最小生成树的最短距离。Kruskal 版本:每次找最短的边纳入最小生成树。

2026-03-16 21:02:01 11

原创 代码随想录算法营第五十四天|108. 多余的边、109. 多余的边II

【代码】代码随想录算法营第五十四天|108. 多余的边、109. 多余的边II。

2026-03-14 20:32:33 14

原创 代码随想录算法营第五十三天|107. 寻找存在的路线

【代码】代码随想录算法营第五十三天|107. 寻找存在的路线。

2026-03-13 20:32:35 14

原创 代码随想录算法营第五十二天|110. 字符串迁移、105. 有向图的完全联通、106. 海岸线计算

【代码】代码随想录算法营第五十二天|110. 字符串迁移、105. 有向图的完全联通、106. 海岸线计算。

2026-03-13 20:31:07 12

原创 代码随想录算法营第五十一天|101. 孤岛的总面积、102. 沉没孤岛、103. 高山流水、104. 建造最大岛屿

【代码】代码随想录算法营第五十一天|101. 孤岛的总面积、102. 沉没孤岛、103. 高山流水、104. 建造最大岛屿。

2026-03-11 20:16:52 15

原创 代码随想录算法营第五十天|99.岛屿数量、100.岛屿最大面积

【代码】代码随想录算法营第五十天|99.岛屿数量、100.岛屿最大面积。

2026-03-10 10:07:00 15

原创 代码随想录算法营第四十九天|98. 可达路径

ACM模式要自己处理输入与输出。

2026-03-09 10:52:16 29

原创 代码随想录算法营第四十七天|42. 接雨水、84.柱状图中最大的矩形

第一个思路是计算每一层的最大柱子个数,求和后减去实际的柱子格数得到的就是能够接的最大雨水数量。第二个思路是利用单调栈,来求出栈顶元素左边第一个比自己大的元素以及右边第一个比自己大的元素。

2026-03-07 11:01:09 22

原创 代码随想录算法营第四十六天|739. 每日温度、 496.下一个更大元素 I、503.下一个更大元素II

【代码】代码随想录算法营第四十六天|739. 每日温度、 496.下一个更大元素 I、503.下一个更大元素II。

2026-03-06 21:24:05 165

原创 代码随想录算法营第四十五天| 647. 回文子串 、516.最长回文子序列

【代码】代码随想录算法营第四十五天| 647. 回文子串 、516.最长回文子序列。

2026-03-05 10:56:00 21

原创 代码随想录算法营第四十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列

【代码】代码随想录算法营第四十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列。

2026-03-04 12:32:42 18

原创 代码随想录算法营第四十四天|115.不同的子序列、583. 两个字符串的删除操作 、72. 编辑距离

【代码】代码随想录算法营第四十四天|115.不同的子序列、583. 两个字符串的删除操作 、72. 编辑距离。

2026-03-04 12:30:12 16

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

【代码】代码随想录算法营第四十二天|300.最长递增子序列、 674. 最长连续递增序列、718. 最长重复子数组。

2026-03-02 12:22:43 150

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

【代码】代码随想录算法营第四十天|188.买卖股票的最佳时机IV 、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费。

2026-03-01 13:57:39 109

原创 代码随想录算法营第三十九天|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

因为最多可以进行两次交易,所以一共可以有五个状态。换句话说只要把所有上坡的峰谷值差求得即可。每个状态都可以由前面的状态转移而来。2.第一次不持有股票。4.第二次不持有股票。

2026-03-01 11:11:27 195

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

【代码】代码随想录算法营第三十八天|198.打家劫舍、213.打家劫舍II、337.打家劫舍III。

2026-02-26 20:09:21 393

原创 代码随想录算法营第三十七天|322. 零钱兑换、279.完全平方数 、139.单词拆分

【代码】代码随想录算法营第三十七天|322. 零钱兑换、279.完全平方数 、139.单词拆分。

2026-02-25 23:13:36 207

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

容量为0的时候方案数设为1是为了后续能够推导。

2026-02-24 15:53:32 213

原创 代码随想录算法营第三十五天|1049. 最后一块石头的重量 II、494.目标和、474.一和零

【代码】代码随想录算法营第三十五天|1049. 最后一块石头的重量 II、494.目标和、474.一和零。

2026-02-24 15:50:53 98

原创 代码随想录算法营第三十四天|416. 分割等和子集

对于dp数组的定义为:dp[j] 表示容量为j的背包能装的最大重量。对于每一个数字考虑取或者不取,当取到的总和为数组和一半时即可判定。

2026-02-23 15:33:17 131

原创 代码随想录算法营第三十三天|62.不同路径、63. 不同路径 II

因为只能向右或者向下走一格,所以当前位置的走法只取决于上一格和左一格的状态。dp[i][j]:走到(i, j)位置一共有多少种走法。相较于上一题多加了一些障碍物判定。

2026-02-22 12:26:15 198

原创 代码随想录算法营第三十二天|509. 斐波那契数、 70. 爬楼梯 、746. 使用最小花费爬楼梯

dp[i]:爬到第i个台阶有dp[i]种方法。由于第3个台阶只能由第1个台阶跨两阶或者第2个台阶跨一阶得到,因此方法数为两者之和。dp[i]:站在第i个台阶所要的花费。

2026-02-14 17:21:07 103

原创 代码随想录算法营第三十一天|56. 合并区间、738.单调递增的数字

【代码】代码随想录算法营第三十一天|56. 合并区间、738.单调递增的数字。

2026-02-14 17:15:36 189

原创 代码随想录算法营第三十天|452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

【代码】代码随想录算法营第三十天|452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间。

2026-02-13 23:01:17 146

原创 代码随想录算法营第二十九天|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

【代码】代码随想录算法营第二十九天|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列。

2026-02-11 20:39:39 104

原创 代码随想录算法营第二十八天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II 、1005.K次取反后最大化的数组和

我的思路为每次在最低点买入,最高点卖出。在已知走势的情况下,每次找到上升曲线中的峰值与谷值,其差和即为能获得的最大利润。只要将所有负数变成正数就可以将数组和最大化。若还有多余的操作步骤,只要一直乘在最小的那一位上就可以得到最大化的和。类似模拟,每次更新能够走到的最大下标处。只要支持的下标距离大于等于数组的长度就一定可以走到最后一位。

2026-02-10 20:16:17 151

原创 代码随想录算法营第二十七天|455.分发饼干、376. 摆动序列、53. 最大子序和

要尽可能多的给小孩分饼干,最直观的想法就是尽可能给小孩分与其胃口最相近的饼干。为此要先进行排序,然后用两个指针来表示是否将该饼干喂给该小孩。不在意中间过程的话,可以很明显的看出这个序列有6的上下坡的过程,因此对应最长的序列长度为7.对于贪心算法而言,最重要的一点就是要确保局部最优最后能够推出全局最优。我们要找的即为这个序列有多少个上坡与下坡。用了动态规划的思路实现。

2026-02-09 16:22:12 110

原创 代码随想录算法营第二十五天|491.递增子序列、46.全排列、47.全排列II

在判断如何将符合要求的数字添加进path中卡住了。没想到对于初始值,直接先判断path是否为空,若为空直接跳过不进行数值判断。排列相较于组合的不同点在于,每次都要从数组中从头开始遍历,遇到使用过的就进行跳过。Tips : 去重前要先进行排序。去重操作同之前的题目。

2026-02-07 15:06:21 212

原创 代码随想录算法营第二十四天|93.复原IP地址 、78.子集、90.子集II

每次加分隔符之前都要判断当前分割出来的数字是否符合要求。因此要额外的判断合法性的函数isvalid。求子集就相当于把这个递归树的所有节点都记录下来,因此收集答案的部分直接不用加判断语句。思路同上一题,但是多了一个去重的步骤。遇到相同的数字只选择一个使用即可。思路和分割回文串很相似。本题采取在原字符串上进行操作加。

2026-02-07 15:01:58 167

原创 代码随想录算法营第二十三天|39. 组合总和、40.组合总和II、131.分割回文串

避免重复的策略是引入一个used数组,记录该层是否使用了已使用过的元素。在此之前要先对数组进行排序。避免重复的策略是从该位次开始遍历,而不是从数组的开头进行。

2026-02-05 15:12:36 169

原创 代码随想录算法营第二十二天|77.组合、216.组合总和III、17.电话号码的字母组合

第一层是可以从所有[1, n]的元素中选取,因此for循环从begin = 1开始。用for循环来遍历一层可能出现的所有情况,用递归来确定第几层。递归确定 [begin, n]即下一层从哪几个元素中选。关于回溯,我的理解是带for循环的递归。每次要从数字所对应的字符串中依次遍历字符。同样的思想,可以写出以下代码。符合要求时直接收集答案。

2026-02-05 13:54:36 196

原创 代码随想录算法营第二十一天|669. 修剪二叉搜索树

基于BST的特性可知,若是当前节点大于上界,其右子树的所有节点必定都大于上界,其左子树的节点不一定都小于上界,因此要对左子树进行递归处理。同理若当前节点小于下届,其左子树的节点一定都小于下届,其右子树的节点不一定都大于下届,因此要对于右子树进行递归处理。由于BST的特性,大于等于自身的节点一定在右子树。因此使用右中左的遍历次序,使用双指针叠加节点的值。因为是有序数组,因此每次取中间的数当作根节点即可,每次递归调用传入新的区间限制数组。

2026-02-03 20:43:36 152

原创 代码随想录算法营第二十天|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

与寻常的二叉树相比,BST的特性就是右子树的值大于根节点,左子树的值小于根节点。BST的插入就是按照值的大小对比来判断应该在左子树还是右子树。1. 若该节点的值均大于目标两节点,说明公共祖先在左子树。2. 若该节点的值均小于目标两节点,说明公共祖先在右子树。3. 若该节点的值在目标两节点中间,说明公共祖先已经找到。于是可以发现这么一个规律。

2026-02-02 19:33:59 115

原创 代码随想录算法营第十八天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数

同样利用二叉搜索树的特性,中序遍历记录每个元素的出现次数,当cnt等于maxcnt时记录答案,大于maxcnt时清空已保留的答案,重新输入。核心思路是当遍历到p或者q节点时,返回p或者q。若以当前节点为根节点的左右子树返回值非空则说明该节点为最近公共祖先节点。利用二叉搜索树的特性,中序遍历时是一个严格不增的序列。要找最小的绝对差即为中序遍历相邻的两个元素差的最小绝对值。想到利用双指针pre和cur进行中序遍历来获得相邻元素的绝对差。

2026-02-01 20:18:52 159

原创 代码随想录算法营第十七天|617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

思路一:二叉搜索树经过中序遍历之后应该是单增的,若出现非单增的则false。根据二叉搜索树的特性,若小于val,则在右子树找。1.两个都为nullptr时,直接返回空节点。2.有一个不为空节点,返回非空的那个节点。3.两个节点均非空,返回合并的值。借助树1,将树2合并过来。4.左右子树递归调用。

2026-01-31 14:52:59 192

空空如也

空空如也

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

TA关注的人

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