自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第六十二天 | 图论part11

【代码】代码随想录算法训练营第六十二天 | 图论part11。

2024-09-03 22:01:05 499

原创 代码随想录算法训练营第六十天 | 图论part10

对于Bellman_ford算法的优化,松弛n-1次,并且每一次都松弛每一条边,其实做了许多没有意义的事情。实际上只去松弛上一次计算过的节点作为出发节点的边即可。只需要记录每个节点入队列的次数,超过n-1直接输出circle然后返回。对所有边松弛一次,相当于计算 起点到达与起点同一条边的节点的最短距离。所以应该最多松弛k+1条边。并且每次松弛只能使用上次结果的副本。

2024-08-31 18:54:21 586

原创 代码随想录算法训练营第五十九天 | 图论part09

使用堆优化,从宏观角度来说就是将每条边都加入堆,一共是E条边,每次操作的时间复杂度是。Bellman_ford算法就是松弛n-1次。每一次会将所有点到源点的距离更新。使用邻接表和堆来优化dijkstra算法。

2024-08-31 16:08:45 778

原创 代码随想录算法训练营第五十八天 | 图论part08

在这一题中,只需要输出一种方法。使用BFS的方法,找到入度为0的节点,将其从树中删去,重复上述步骤,直到没有入度为0的节点。如果此时没有删除所有的节点,表明这个有向图有环,输出-1.否则,正常输出。记录到源点的距离的一维数组。

2024-08-30 23:09:38 716

原创 代码随想录算法训练营第五十七天 | 图论part07

prim算法int。

2024-08-30 14:41:59 796

原创 代码随想录算法训练营第五十六天 | 图论part06

【代码】代码随想录算法训练营第五十六天 | 图论part06。

2024-08-29 22:59:02 757

原创 代码随想录算法训练营第五十五天 | 图论part05

只需要判断是否联通,不需要知道具体路径或者路径数量,可以使用并查集。

2024-08-29 16:23:28 515

原创 代码随想录算法训练营第五十三天 | 图论part04

思路是要将字符串之间用线连起来,每个相邻的字符串只有一个字符不同。通过bfs来找到最短路径。要注意已经走过的路径要记录下来,包括走过的步数。但是这一题并没有建图,而是将这个过程简化了,只是记录下了path。

2024-08-29 14:09:48 607

原创 代码随想录算法训练营第五十二天 | 图论part03

【代码】代码随想录算法训练营第五十二天 | 图论part03。

2024-08-28 22:49:00 269

原创 代码随想录算法训练营第五十一天 | 图论part02

【代码】代码随想录算法训练营第五十一天 | 图论part02。

2024-08-28 14:06:16 207

原创 代码随想录算法训练营第五十天 | 图论part01

【代码】代码随想录算法训练营第五十天 | 图论part01。

2024-08-27 14:14:28 153

原创 代码随想录算法训练营第四十九天 | 单调栈part02

利用单调栈寻找每一个元素右边比它大的元素,同时在单调栈中的下一个元素就是在它左边比它大的第一个元素,此时便形成了凹槽。每一个元素向左找到第一个比它小的元素,向右找到第一个比它小的元素。

2024-08-22 12:01:19 219

原创 代码随想录算法训练营第四十八天 | 单调栈part01

【代码】代码随想录算法训练营第四十八天 | 单调栈part01。

2024-08-21 22:26:33 114

原创 代码随想录算法训练营第四十六天 | 动态规划 part13

【代码】代码随想录算法训练营第四十六天 | 动态规划 part13。

2024-08-19 10:36:34 282

原创 代码随想录算法训练营第四十五天 | 动态规划 part12

本题递推公式与初始化最为重要。

2024-08-16 18:47:30 264

原创 代码随想录算法训练营第四十四天 | 动态规划 part11

【代码】代码随想录算法训练营第四十四天 | 动态规划 part11。

2024-08-15 16:09:23 252

原创 代码随想录算法训练营第四十三天 | 动态规划 part10

【代码】代码随想录算法训练营第四十三天 | 动态规划 part10。

2024-08-14 18:01:59 240

原创 代码随想录算法训练营第四十二天 | 动态规划 part09

【代码】代码随想录算法训练营第四十二天 | 动态规划 part09。

2024-08-13 13:32:59 213

原创 代码随想录算法训练营第四十天 | 动态规划 part08

买卖股票和打家劫舍一样,都有两种状态,买还是不买,卖还是不卖,因此dp[i][0]表示第i天持有股票的最大现金,dp[i][1]表示第i天不持有股票的现金。

2024-08-12 13:28:49 194

原创 代码随想录算法训练营第三十九天 | 动态规划 part07

这一题实际上就是多次调用上面的代码。考虑使用头节点不使用尾节点的情况和使用尾节点不使用头节点的情况。这是第一次遇见树形dp。思路是递归三部曲的思路,选择后序遍历。

2024-08-11 13:52:22 222

原创 代码随想录算法训练营第三十八天 | 动态规划 part06

【代码】代码随想录算法训练营第三十八天 | 动态规划 part06。

2024-08-09 21:02:36 235

原创 代码随想录算法训练营第三十七天 | 动态规划 part05

但是这里有拓展的地方是遍历顺序,完全背包问题是可以调换两个for循环的顺序的,但是在这里不行。因为这里是组合问题,要先遍历物品,再遍历背包。如果是排列问题,要先遍历背包,再遍历物品。可以将爬楼梯抽象为完全背包问题。背包容量是楼梯数,物品的重量就是1-m,每次爬多少级台阶,物品的价值是爬到j台阶数有多少种方法。在本题中,是一种排列问题,而不是组合问题。但是对于先遍历背包,再遍历物品的遍历顺序来说,每次都会从头区遍历物品,类似于排序。对于先遍历物品,再遍历背包的遍历顺序来说,每次只会多去更新一个物品。

2024-08-08 11:34:20 207

原创 代码随想录算法训练营第三十六天 | 动态规划 part04

假设left是给+符号,right是给-符号,left+right=sum,left - right = target.由上面两个式子可以得出left=(target+sum)/2.这一题和最后一块石头的重量、分割等和子集一样,都是要分成两个集合,在这里,一个集合是给+,一个集合给-。本题的物品属性是二维的,背包容量也是二维的,二维容量下最多能装多少个物品,所以每个物品价值都是1。有多少种方法可以装满背包的递推公式是dp[j]+=dp[j-nums[i]]最后一块石头的重量是,能装多满。

2024-08-07 23:29:15 283

原创 代码随想录算法训练营第三十五天 | 动态规划 part03

本题的关键是通过将数组的值既作为重量,又作为价值。作为重量,是为了限制重量之和不能超过target,在重量之和不超过target的情况下,如果价值也等于target,那么说明存在。

2024-08-07 16:45:26 267

原创 代码随想录算法训练营第三十四天 | 动态规划 part02

【代码】代码随想录算法训练营第三十四天 | 动态规划 part02。

2024-08-05 23:56:37 458

原创 代码随想录算法训练营第三十二天 | 动态规划 part01

动态规划的题目要去找递推函数,其实就是找规律。可以发现本题的规律就是斐波那契数列。

2024-08-05 17:56:25 334

原创 代码随想录算法训练营第三十一天 | 贪心算法 part05

本题的策略是遇到前一位大于后一位的情况,前一位减一,后面的置为9。将当前结果暂存于结果集中,并随着遍历而修改结果集。这样就省去了记录左右边界的问题。贪心策略:叶子节点的父节点尽量安装摄像头;每隔两个空节点安装摄像头。

2024-08-05 14:31:27 487

原创 代码随想录算法训练营第三十天 | 贪心算法 part04

与上一题很相似,关键是在发生重叠后要更新end,新的右边界,因为肯定要去掉一个数组,贪心的做法是去掉右边界大的。本题的关键是首先根据左边界或右边界进行排序,使得可能重叠的气球排在一起,好处理。

2024-08-05 10:12:22 408

原创 代码随想录算法训练营第二十九天 | 贪心算法 part03

2. 在遍历加油站的过程中,当剩余油量和小于0时,说明此时的初始位置油量不能支持,因此更新初始位置到下一个加油站。贪心策略是:首先根据身高进行降序排序,然后遍历数组,可以直接将数组根据前面有几个人作为下标插入新数组。贪心策略:1. 如果每个加油站的剩余油量总和小于0,说明不存在可以绕一圈的情况。先分发左大于右的情况,再分发右大于左的情况。这一题感觉就是简单的分类讨论。

2024-08-04 22:36:50 310

原创 代码随想录算法训练营第二十八天 | 贪心算法 part02

初始覆盖范围是0,数组第一个元素。遍历覆盖元素,并且记录下一个覆盖范围的最大值,当遍历完覆盖范围,且没有到达终点,计数+1,更新覆盖范围。那么怎么跟踪覆盖范围呢?通过遍历覆盖范围内的元素,及时更新新的覆盖范围,当覆盖范围超过最后一个下标,返回true。贪心策略是先按绝对值排序,然后先把负数取反;然后根据剩余的翻转次数,对最小的数进行取反。我原本的想法是循环k次,每次都对数组排序,将最小的元素取反。重要的不是怎么跳跃,而是覆盖范围。通过更小的颗粒度处理,提高了效率。贪心策略是收集每一天正的利润值。

2024-08-04 13:58:35 445

原创 代码随想录算法训练营第二十七天 | 贪心算法 part01

将胃口与饼干排序,从胃口最大的开始遍历,找到符合条件的饼干,不符合就找下一个。也就是说最大的饼干找能满足的最大的胃口。贪心策略是:当遇到连续累加和为负数时,转而记录数组下一个值,及时止损。每加一个数,都要和result比较,及时更新。对于摆动序列,要记录当前斜率和之前斜率,只有两者符号不同,才记录结果。

2024-08-03 13:19:08 166

原创 代码随想录算法训练营第二十五天|回溯算法part04

排列与组合不同的是,对于排列来说,不同顺序就是不同的排列。因此不能使用startIndex来辅助递归,要用一个used的数组来记录哪些数已经在path中。由于数组中可能含有重复元素,因此首先要对数组进行排序,然后在回溯过程中,对树层去重,其余和上题一致。

2024-08-02 09:42:19 263

原创 代码随想录算法训练营第二十四天|回溯算法part03

与之前组合问题和切割问题不同的是,每一个节点都要收集到结果集里面。总体思路与分割回文串相类似,但是有许多细节。比上一题多一个查重的步骤。

2024-08-01 14:48:55 216

原创 代码随想录算法训练营第二十三天|回溯算法part02

在一个集合中,一个元素只能使用一次,找到组合总和为target的组合,并且答案中不能有重复的组合。可以重复使用同一个元素就是将之前组合类型题目中递归参数startIndex不要+1。在一个集合中,可以多次使用同一个元素,找到组合总和为target的组合。这道题目涉及了去重问题。树层去重,树枝不去重。一个字符串可以看成一个集合,切割的字符串范围是。

2024-07-25 17:19:59 299

原创 代码随想录算法训练营第二十二天|回溯算法part01

这一题与上题一样,除了终止条件中需要判断和是否为target。多了一个剪枝操作,就是当值已经大于target,直接返回。本题还有一个建立数字和字母之间映射的问题,使用string数组来进行映射。因此回溯算法的宽度是每个集合里面的个数,回溯算法的深度是集合的个数。参数是digits与index,index是用来记录遍历第几个集合。在单个集合1-9中,寻找所有个数为k且和为target的组合。在单个集合1-n中,寻找所有个数为k的组合。这一题是在多个集合中找所有可能的组合。和所有递归一样,都有三部曲。

2024-07-25 11:27:31 851

原创 代码随想录算法训练营第二十一天|二叉树 part8

本质就是寻找分割点,分割点作为当前节点,然后递归左区间和右区间。其实就是判断当前节点的值与搜索区间的关系。

2024-07-24 17:41:43 771

原创 代码随想录算法训练营第二十天|二叉树 part7

这一题比插入操作要难,因为会改变二叉搜索树的结构,并且不能违反二叉搜索树的特性。

2024-07-23 21:40:19 640

原创 代码随想录算法训练营第十八天|二叉树 part6

与验证二叉搜索树一致。

2024-07-22 17:31:34 186

原创 代码随想录算法训练营第十七天|二叉树 part5

陷阱:二叉搜索树的根节点大于左子树包含的所有节点,小于右子树包含的所有节点。使用中序遍历二叉搜索树是单调增的,根据这一点突破。

2024-07-19 22:17:49 445

原创 代码随想录算法训练营第十六天|二叉树 part4

使用层次遍历,并记录每一层的第一个元素,返回最后一层第一个元素即是答案。

2024-07-19 11:57:20 620

空空如也

空空如也

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

TA关注的人

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