自定义博客皮肤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)
  • 收藏
  • 关注

原创 代码训练营总结篇

跟着代码随想录,我第一次相对完整地完成了代码题库的学习。在很多时候,一天的工作量是很多的,比较忙,如果没有打卡机制,可能我早就放弃了,根本就坚持不下去。在群里,每天都有群友在讨论问题,一起坚持打卡,帮助了我很多东西。代码随想录的题目+代码+教程是非常完整的,后续还会二刷、三刷等,也推荐大家一起来学习。

2025-01-02 13:22:26 106

原创 代码随想录算法训练营第六十二天 | Floyd 算法精讲 A * 算法精讲 (A star算法)

127. 骑士的攻击。

2024-12-30 15:10:49 159

原创 代码随想录算法训练营第六十天 | Bellman_ford 队列优化算法(又名SPFA) bellman_ford之判断负权回路 bellman_ford之单源有限最短路

96. 城市间货物运输 III。95. 城市间货物运输 II。94. 城市间货物运输 I。

2024-12-30 15:06:55 167

原创 代码随想录算法训练营第五十九天 | dijkstra(堆优化版)精讲 Bellman_ford 算法精讲

94. 城市间货物运输 I。

2024-12-27 12:10:01 229

原创 代码随想录算法训练营第五十八天 | 拓扑排序精讲 dijkstra(朴素版)精讲

【代码】代码随想录算法训练营第五十八天 | 拓扑排序精讲 dijkstra(朴素版)精讲。

2024-12-27 12:06:10 293

原创 代码随想录算法训练营第五十七天 | prim算法精讲 kruskal算法精讲

【代码】代码随想录算法训练营第五十七天 | prim算法精讲 kruskal算法精讲。

2024-12-26 16:11:19 235

原创 代码随想录算法训练营第五十六天 | 108.冗余连接 109.冗余连接II

109.冗余连接II。

2024-12-26 16:04:36 236

原创 代码随想录算法训练营第五十五天 | 并查集理论 107. 寻找存在的路径

107. 寻找存在的路径。

2024-12-26 15:54:53 171

原创 代码随想录算法训练营第五十三天 | 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长

105.有向图的完全可达性。

2024-12-26 15:32:48 157

原创 代码随想录算法训练营第五十二天 | 101. 孤岛的总面积 102.沉没孤岛 103.水流问题 104.建造最大岛屿

101. 孤岛的总面积。104.建造最大岛屿。

2024-12-26 15:04:45 232

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

100. 岛屿的最大面积。

2024-12-26 14:09:57 145

原创 代码随想录算法训练营第五十天 | 98. 所有可达路径

98. 所有可达路径。

2024-12-24 10:11:15 185

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

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

2024-12-20 10:45:42 133

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

496.下一个更大元素 I。503.下一个更大元素II。

2024-12-19 11:53:44 224

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

516.最长回文子序列。

2024-12-15 14:18:29 162

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

583. 两个字符串的删除操作。115.不同的子序列。

2024-12-13 14:26:31 150

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

1143.最长公共子序列。1035.不相交的线。

2024-12-12 22:51:58 181

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

674. 最长连续递增序列。718. 最长重复子数组。300.最长递增子序列。

2024-12-11 18:02:26 202

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

714.买卖股票的最佳时机含手续费。309.最佳买卖股票时机含冷冻期。188.买卖股票的最佳时机IV。

2024-12-10 20:28:52 216

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

123.买卖股票的最佳时机III。122.买卖股票的最佳时机II。121. 买卖股票的最佳时机。

2024-12-09 18:46:39 174

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

337.打家劫舍III。213.打家劫舍II。

2024-12-08 20:23:18 211

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

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

2024-12-06 22:42:11 299

原创 代码随想录算法训练营第三十七天 | 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ 70. 爬楼梯 (进阶)

完全背包和01背包的区别在于,在遍历背包容量时01背包从大到小遍历,保证每个物品只能取1次,而完全背包问题从小到大遍历,使得物品可以被多次选取。思路:排列问题,与上题的组合问题有着明显的差距。518. 零钱兑换 II。70. 爬楼梯 (进阶)377. 组合总和 Ⅳ。

2024-12-05 12:38:31 222

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

思路:同样分为两个集合,left-right=target,left+right=sum,right = sum - left;思路:两两石头粉碎,实际上就是尽可能的平分,然后看两个集合相差多少。1049. 最后一块石头的重量 II。

2024-12-05 10:45:53 151

原创 代码随想录算法训练营第三十五天 | 01背包问题 二维 01背包问题 一维 416. 分割等和子集

思路:若能平分集合,那么其总和必须是偶数,如果和为奇数则直接返回false。剩下我们的目标就是找数字凑够sum/2。416. 分割等和子集。

2024-12-03 19:48:09 231

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

思路:在初始化的时候,上边界和左边界中存在障碍,则边界中的后续都为0。把有障碍的位置路径和置为0。然后还是一样的操作dp[i][j] = dp[i-1][j] + dp[i][j-1];思路:先初始化上边界和左边界,第i,j位的路径和等于其上方路径量与左方路径量之和。63. 不同路径 II。

2024-12-02 12:53:43 275

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

思路:每阶楼梯的花费 应该是前n-1阶的花费或前n-2阶的花费的最小值,若当前层数没到楼顶就加上当前层数的花费。思路:第n阶 可以由第n-1阶爬一阶 和第n-2阶爬两阶完成。746. 使用最小花费爬楼梯。509. 斐波那契数。

2024-11-30 12:46:06 159

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

思路:遇到前一位大于后一位的,后一位置为9,前一位减一;而且还不能在遍历的时候就将数字置为9,会影响到后续的判断;检测到符合条件的位置,然后将后面数字全部置为9即可。思路:先排序,初始化左右边界,若元素左值小于等于右边界,则更新右边界,否则将结果存进res。738.单调递增的数字。

2024-11-29 11:04:10 130

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

思路:先排序,然后比较是否存在覆盖,若无覆盖则箭的数量加一;存在覆盖时,由于左边界是越来越小的,也就是说此时元素的第一个值就是覆盖区间的左边界,而右边界则是该元素第二个值和之前覆盖范围右边界中的较小值。思路:记录每个字母出现的最大下标,依次遍历,直到在某一范围内下标的最大值等于索引值,将结果放入列表中。思路:类似于上一题,当存在覆盖时,须移除数量加一,待检查的右边界更新为覆盖的右边界。452. 用最少数量的箭引爆气球。435. 无重叠区间。763.划分字母区间。

2024-11-28 10:53:04 135

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

思路:若gas总和小于cost总和,则一定不能绕环路一周;从某个位置开始,若差值和出现负数,则表示从该位置出发不能达到目的。思路:先考虑右孩子大于左孩子的情况,进行糖果分配,然后再从后往前遍历左孩子大于右孩子的情况,糖果分配取两个结果的最大值。思路:先按身高对人群进行排列(身高相同的话,k小的排前面),然后依次遍历,k值就表示当前people该插入的位置。思路:统计5美元、10美元的数量,来钱时数量增加,找零时数量减少,若出现负数则说明不能正确找零。406.根据身高重建队列。

2024-11-27 14:39:31 160

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

思路:若当前的跳跃范围未能覆盖最后一个元素,那么次数一定会加一。用nextDistance来记录跳跃范围内下次跳跃的最大范围,以此类推,更新跳跃范围。思路:先将k值用在负数上,更小的负数先转变为正数。若k值还有冗余,则全部用在最小的正整数上。思路:该问题的关键在于跳跃的范围能不能覆盖到最后一个位置,不必要去考虑每一步跳跃的最优解。思路:贪心算法思想就是,只有后一天减去前一天的价格差值为正数时,才会计入结果即可。动态规划: dp[i][0]代表第i天未买入,dp[i][1]代表第i天已买入。

2024-11-27 12:53:16 168

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

思路:贪心思想,通过差值的变化来确定峰顶和峰谷结点的数量。下段代码的关键点在于,prediff只在确定摆动时更新。思路:贪心思想,尽可能地将大饼干给大胃口。思路:依次遍历,当和为负数时,就重新计数。贪心算法:通过局部最优解来得到全局最优解。

2024-11-25 12:56:53 197

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

思路:该题的关键在于在树的同一层不能选择值相同的元素,所以需要创建一个记录元素是否使用过的记录表,可以用数组也可以用哈希表。而且,需要在循环内回溯函数内创建,这样能保证记录的是同一层元素的使用情况,到下一层时会自动重新创建,相当于清空操作。思路:全排列的思路在于元素有顺序,将每一个元素都选一次,所以for循环回溯遍历的时候,每次都从0下标开始。若遇到已经选择过的元素跳过即可。思路:关键点还是在于去重,以及重复数据的选取问题。491. 非递减子序列。

2024-11-24 19:29:08 214

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

思路:子集问题跟组合问题的区别在于:若将两种问题看成树处理,组合问题要的结果是叶子节点,而子集问题的结果是树中的所有节点。所以求解子集问题的关键点在于每次回溯的时候都将路径添加到res结果中即可。思路:该题中存在重复数据,但是不能存在重复子集,处理方案跟组合总和Ⅱ一样,需要判断当前元素值是否被重复使用。思路:类似于切割回文字符串,如果当前字符串有效则加“.”点。

2024-11-22 15:28:02 218

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

思路:类似于题目:组合,唯一的区别在于此题元素可以重复使用,即在调用回溯函数时索引不是i+1,而是i。注:此题若不进行剪枝处理,将会报错。由于剪枝处理的处理逻辑是,当前sum已经大于目标值就退出,所以要将较小的数放在前面,即先对数组进行排序。思路:主题思路跟组合总和一致,区别1在于不能重复选择元素,所以回溯时传的index是i+1;区别2在于有重复的数据,但是结果不能有重复的组合,所以需要进行去重,即之前选择过的元素在同一层不能在此选择。思路:该题的关键是在于判断是否为回文字符串。

2024-11-21 23:12:29 188

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

思路:类似上一题的思路,多一个变量sum,使得终止条件变成path.size()==k && sum == n;思路:本题思想的关键在于每次回溯不同的字符串,也就是不同字符串之间来回选取,思路与之前题目类似。思路:先从集合中挑选一个,然后在剩下的集合中挑,以此类推,直到挑选的数量等于k。剪枝处理:1.如果数量不够,不进行遍历;2.如果sum提前大于n,直接退出;剪枝处理:如果剩余的集合数量不足以挑选k个,直接退出即可。17.电话号码的字母组合。216.组合总和III。

2024-11-20 16:21:07 222

原创 代码随想录算法训练营第二十一天 | 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

思路:由于存在父节点不在范围内,而子树在范围内的情况,所以在处理上不能简单的判断大小。应该递归得到满足条件的子树,然后返还给上层节点。思路:其实整个过程可以看成是有序数组从右往左进行累加,所以整个递归过程应该是右中左的遍历顺序,然后将结果累加即可。思路:递归处理将中间值当作子树的根节点, 然后划分左右子树,依次进行构造子树。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。

2024-11-19 12:46:59 240

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

思路:按照搜索树有序的特性进行递归找到该插入的位置,然后创建节点并接收即可。思路:直接按照普通二叉树找最近公共祖先,也是可以的。235. 二叉搜索树的最近公共祖先。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。也可以利用二叉搜索树的特性。

2024-11-18 23:03:09 247

原创 代码随想录算法训练营第十八天 | 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

思路:由于二叉搜索树是有序的,按照中序遍历的情况就是从小到大排列,所以可以按照中序遍历来递归求相邻节点值的差值。思路:采用后续遍历的思想,先遍历左右子树,找到目标节点就返回节点。思路:基础思路还是将搜索树看成有序数组,来找众数。236. 二叉树的最近公共祖先。530.二叉搜索树的最小绝对差。501.二叉搜索树中的众数。

2024-11-17 16:32:05 159

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

思路:陷阱:不能简单比较中间节点 是否大于左节点、是否小于右节点;而是应该保证中间节点大于左子树中的每一个值,小于右子树中的每一个值;所以应当设置一个max,确保按照中序遍历时,每一次接收节点值都能够更新max,否则return false;思路:递归处理,如果当前节点的值等于目标值直接返回节点,否则就去递归左右子树。思路:类似根据中序后序构建二叉树,先确定根节点,划分左右子树,然后递归即可。思路:将两个树的结果覆盖在树1上,递归处理各个子树。700.二叉搜索树中的搜索。98.验证二叉搜索树。

2024-11-15 14:20:42 135

空空如也

空空如也

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

TA关注的人

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