自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营day76 | Floyd 算法精讲、A * 算法精讲

本次题目来自于卡码网。

2024-07-09 13:42:09 502 1

原创 代码随想录算法训练营day74 | 94. 城市间货物运输 I、95. 城市间货物运输 II、96. 城市间货物运输 III

本次题目全部来自卡码网。

2024-07-07 11:37:11 331 1

原创 代码随想录算法训练营day73 | dijkstra(堆优化版)、Bellman_ford算法

本次题目都来自卡码网。

2024-07-05 15:59:00 360

原创 代码随想录算法训练营day72 | 117. 软件构建、47. 参加科学大会

本次题目来自于卡码网。

2024-07-03 13:48:54 257

原创 代码随想录算法训练营day71 | 53. 寻宝

在节点数量固定的情况下,图中的边越少,Kruskal 需要遍历的边也就越少。而 prim 算法是对节点进行操作的,节点数量越少,prim算法效率就越优。所以在 稀疏图中,用Kruskal更优。在稠密图中,用prim算法更优。复杂度Prim 算法 时间复杂度为 O(n^2),其中 n 为节点数量,它的运行效率和图中边树无关,适用稠密图。Kruskal算法 时间复杂度 为 nlogn,其中n 为边的数量,适用稀疏图。

2024-07-02 16:54:50 210

原创 代码随想录算法训练营day70 | 108. 冗余连接、109. 冗余连接II

本次题目都来自卡码网。

2024-07-02 14:14:13 434

原创 代码随想录算法训练营day69 | 寻找存在的路径

本次题目来自于卡码网。

2024-07-01 11:00:54 215

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

本次题目全部来自卡码网。

2024-06-28 15:44:48 324

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

本次都是卡码网题目。

2024-06-26 14:54:58 357

原创 代码随想录算法训练营day65 | 99. 岛屿数量 深搜、99. 岛屿数量 广搜、100. 岛屿的最大面积

本次题目都是卡码网上的。

2024-06-25 11:20:45 237

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

整体上一般分为 有向图 和 无向图。加权有向图,就是图中边是有权值的,加权无向图也是同理。

2024-06-24 15:58:08 453

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

遍历每根柱子(第一个和最后一个不需要遍历,因为不可能存住水),找到当前柱子的左边最高柱子lHeight,右边最高柱子rHeight,当前柱子能存的水为min(min(lHeight, rHeight) - 当前柱子的高度, 0)会超时。

2024-06-23 11:12:09 623

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

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。使用单调栈主要有三个判断条件。

2024-06-18 10:46:53 288

原创 代码随想录算法训练营day60 | 647. 回文子串、516.最长回文子序列

布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。

2024-06-17 14:43:50 903

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

dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]

2024-06-17 13:31:14 732

原创 代码随想录算法训练营day58 | 392.判断子序列

dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]

2024-06-16 10:40:42 338

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

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]

2024-06-16 10:07:33 501

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

dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度,一定要是以nums[i]为结尾。

2024-06-16 08:28:19 409

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

dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。不持有股票状态,这里就有两种卖出股票状态冷冻期为状态四。

2024-06-14 16:56:16 423

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

五个状态dp[i][j]表示第i天状态j所剩最大现金。

2024-06-14 16:48:41 370

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

本题暴力和贪心都能解,贪心的代码值得好好学习使用动态规划。

2024-06-11 22:40:26 306

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

如果不偷当前节点,那么左右孩子就可以偷,至于到底偷不偷一定是选一个最大的,所以:val2 = max(left[0], left[1]) + max(right[0], right[1])忽略最后一个房间,其它房间选择最大值;这两种情况可以避免第一个房间和最后一个房间同时被选中,满足条件。如果是偷当前节点,那么左右孩子就不能偷,val1 = cur->val + left[0] + right[0]即:{不偷当前节点得到的最大金钱,偷当前节点得到的最大金钱}递归三部曲和动态规划五部曲融合。

2024-06-11 21:50:06 333

原创 代码随想录算法训练营day49 | 139.单词拆分

下面的比较好理解一点。

2024-06-09 11:33:24 170

原创 代码随想录算法训练营day48 | 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

本题和377. 组合总和 Ⅳ一样。求的是排列,因此背包重量为外层循环,物品为内层循环。

2024-06-09 10:50:12 256

原创 代码随想录算法训练营day46 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

完全背包相对于01背包来说物品有无限个代码的不同主要体现在遍历顺序上, 完全背包的背包重量不需要倒序遍历,因为物品有无限个,可以被无限添加;并且因为背包重量正序遍历,后续的值依赖于前面的值,因此背包和物品的内外层遍历也没有特定顺序下面以物品外层循环,背包容量内层循环为例。

2024-06-09 06:10:28 306

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

本题将石头分为两堆,即背包重量为sum(stones) // 2不用加绝对值,因为sum(stones) - dp[-1] 是大于dp[-1]的。

2024-06-05 20:26:15 300

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

dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]

2024-06-05 20:01:20 937

原创 代码随想录算法训练营day43 | 343. 整数拆分、96.不同的二叉搜索树

本题可以优化因为拆分一个数n 使之乘积最大,那么一定是拆分成m个近似相同的子数相乘才是最大的。例如 6 拆成 3 * 3, 10 拆成 3 * 3 * 4。100的话 也是拆成m个近似数组的子数 相乘才是最大的。只不过我们不知道m究竟是多少而已,但可以明确的是m一定大于等于2,既然m大于等于2,也就是 最差也应该是拆成两个相同的 可能是最大值。那么 k 遍历,只需要遍历到 n/2 就可以,后面就没有必要遍历了,一定不是最大值。

2024-05-31 16:22:35 266

原创 代码随想录算法训练营day42 | 62.不同路径、63. 不同路径 II

可以使用一维数组优化空间复杂度。

2024-05-31 14:37:28 870

原创 代码随想录算法训练营day41 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础理论基础动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的动态规划的解题步骤动态规划应该如何debug?找问题的最好方式就是把dp数组打印出来,看看究竟是不是按照自己思路推导的!

2024-05-31 11:35:40 260

原创 代码随想录算法训练营day39 | 738.单调递增的数字、968.监控二叉树

暴力解法超时贪心解法:从后向前遍历,如果出现strNum[i - 1] > strNum[i]的情况(非单调递增),让strNum[i - 1]--,然后strNum[i]给为9。

2024-05-30 19:02:37 234

原创 代码随想录算法训练营day38 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

按照左边界排序,直接求重叠区间按照右边界排序,求得是不重叠区间。

2024-05-29 13:39:21 311

原创 代码随想录算法训练营day37 | 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

排序的方式需要学习;列表插入元素的方式也需要学习;本题思路也比较巧妙,值得学习。

2024-05-28 17:13:53 260

原创 代码随想录算法训练营day36 | 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

分几步做,思路清晰。

2024-05-27 16:35:03 290

原创 代码随想录算法训练营day35 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

完全想不出来贪心的解法,分解为每天的利润,所有正利润之和为最大利润。

2024-05-27 14:34:45 263

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

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。

2024-05-27 11:21:42 292

原创 代码随想录算法训练营day32 | 332.重新安排行程、51. N皇后、37. 解数独

不会写,学习别人的代码,下面的代码没有用回溯的模板。

2024-05-27 11:14:35 217

原创 代码随想录算法训练营day31 | 491.递增子序列、46.全排列、47.全排列 II

未去重的代码本题是树结构的同一层剪枝但是本题不能排序,和之前的剪枝差别很大优化点:因为给定的数字范围是-100 <= nums[i] <= 100,因此set可以优化为数组。

2024-05-27 10:59:23 256

原创 代码随想录算法训练营day30 | 93.复原IP地址、78.子集、90.子集II

看了题解之后,可以把判断是否有效提出来成为一个函数,在path等于3的时候就直接得到最后一个数值进行判断。

2024-05-21 22:27:09 145

原创 代码随想录算法训练营day29 | 39. 组合总和、40.组合总和II、131.分割回文串

无重复元素,但是同一个数字可以被重复选取,因此在参数中startIndex在每次递归时不需要+1。但是要注意,为了不寻找之前已经找过的元素,startIndex需要加上,表示只会继续向前寻找剪枝其实就是将下一层的sum大于target的终止条件放到本层的for循环中。

2024-05-21 14:38:02 211

空空如也

空空如也

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

TA关注的人

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