霸L
码龄3年
关注
提问 私信
  • 博客:52,161
    52,161
    总访问量
  • 58
    原创
  • 32,179
    排名
  • 575
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:日常分享一些技术方面相关的解决办法

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2022-03-17
博客简介:

m0_68237332的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    565
    当月
    2
个人成就
  • 获得964次点赞
  • 内容获得9次评论
  • 获得899次收藏
创作历程
  • 58篇
    2024年
成就勋章
兴趣领域 设置
  • Python
    python
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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

网上有很多关于某道题目的具体解法的文章,就像我们训练营每天都要打卡的每日文章,我认为关键不在于写出来了代码,而是说你能自己感悟出其中的奥妙,为什么这么做,所以一定要做好总结,我一直认为总结是记录一道题,一个算法的精髓所在,每个人关注的点不一样,所以我写的总结都是我思考后对我来说重要以及需要关注的点,只要能学到东西,受到启发,那这个总结也就有了意义,不用去管具体形式,内容是否精致,当然这是我的个人看法。但是目前一刷过后,我在看到题后先想一想这道题是什么类型的题目,比如能用贪心吗?先说以下总体感受,非常值得!
原创
发布博客 2024.10.06 ·
479 阅读 ·
5 点赞 ·
1 评论 ·
0 收藏

代码随想录算法训练营第62天 | 1、小明的逛公园,2、骑士的攻击

注意这里的初始化以及遍历顺序,初始化就相当于在三维空间中,将k固定,i、j平面的grid不断比较更新得到最短路径,所以当前层的k会使用到它的前一层k-1,因为它的k-1已经是前面情况里面最短的情况了。为了更好地找到这样的点,所以需要对放入队列的元素按f排序,所以需要用到优先队列,每次从队列里面取的时候也是取的f最小的,从而能够大大简化搜索效率。每条道路上行走的距离都是已知的。小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短的路径。
原创
发布博客 2024.10.01 ·
949 阅读 ·
13 点赞 ·
0 评论 ·
15 收藏

代码随想录算法训练营第60天 | 1、城市间货物运输I,2、城市间货物运输II,3、城市间货物运输III

因为每次松弛操作只会更新一条路径,所以如果每次松弛操作都对每条边进行则会造成冗余计算,因为后续的结果会将前面的结果覆盖掉,比如进行第一次松弛操作,那么则会更新从源点出发的一条路径,如果按照之前没有优化的算法,那么则会将每条边进行操作,但是有效的就只有从源点出发的第一条路径,第二次松弛操作时,有效的是从源点出发跨两条路径的路径,这时就会对第一次的跨两条路径的值覆盖掉,以此类推,所以其实可以不用在每次松弛操作时都对每一条边更新。注意这里的k=2是最多能经过的结点,也可以少于它,只要最后是最短的即可。
原创
发布博客 2024.09.28 ·
1106 阅读 ·
30 点赞 ·
0 评论 ·
11 收藏

代码随想录算法训练营第59天 | 1、参加科学大会,2、城市间货物运输I

所谓松弛操作就是求一个结点的最短路径的时候,可能等于前一个结点的最短路径加上边的权值,也可能本身这个最短路径就是已知的,即minDist[B] = minDist[A] + val或者就等于minDist[B](这里存在A->B这样一条边)。以此类推,从源点到终点的边数最多就为n-1条(因为无环,且结点数为n),所以最多做n-1次就能保证一定能得到从源点到终点的最短路径,当然这个时候从源点到各个结点的最短路径都求出来了。权值为负则表示政府的补贴超过了支出的运输成本,实际表现为运输过程中还能赚取一定的收益。
原创
发布博客 2024.09.27 ·
906 阅读 ·
16 点赞 ·
0 评论 ·
28 收藏

代码随想录算法训练营第58天 | 1、软件构建,2、参加科学大会

某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理文件 A 之前处理文件 B (0 <= A, B <= N - 1)。而拆分的依据与结点间的先后顺序有关,实际应用比如学习课程的先后顺序,做一件事的先后顺序,拓扑图如果能排序,那图中的每个结点所代表的事件一定存在一个先后的逻辑,我们要做的就是将这样的一个顺序找出来。输出共一行,如果能处理成功,则输出文件顺序,用空格隔开。
原创
发布博客 2024.09.27 ·
829 阅读 ·
10 点赞 ·
0 评论 ·
18 收藏

代码随想录算法训练营第57天 | 寻宝

在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。以最小化公路建设长度,确保可以链接到所有岛屿。第一行包含两个整数V 和 E,V代表顶点数,E代表边数。顶点编号是从1到V。例如:V=2,一个有两个顶点,分别是1和2。
原创
发布博客 2024.09.27 ·
451 阅读 ·
6 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营第56天 | 1、冗余连接,2、冗余连接II

该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。图中的 1 2,2 3,1 3 等三条边在删除后都能使原图变为一棵合法的树。这里需要注意在结点入度为2的时候,添加边的时候,遍历顺序是从后往前,这样能保证vec里面的第一个编号是标准输入的相对最后的一条边。输出一条可以删除的边,若有多条边可以删除,请输出标准输入中最后出现的一条边。
原创
发布博客 2024.09.27 ·
1061 阅读 ·
19 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营第55天 | 寻找存在的路径

find函数负责找到每个结点的根,这里涉及到了路径压缩,也就是可能某个结点距离它的根很远,但是在最后递归找到后,直接将根的值返回,保存在了该结点的parent里面,这样就将路径压缩短了;正是因为有了路径压缩,所以一般来说,并查集的时间复杂度是O(logn)到O(1)之间的,刚开始可能是O(logn),但是随着规模越来越大,路径不断被压缩,最终查找的效率就会趋近于O(1)。如果存在,输出 1;实现的方式呢就是使用一个parent数组来保存节点之间的联系,就好像一棵二叉树一样,结点之间是有联系的。
原创
发布博客 2024.09.26 ·
410 阅读 ·
6 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营第53天 | 1、字符串接龙,2、有向图的完全可达性,3、岛屿的周长

第二种是统计所有的陆地数量以及所有的相邻陆地数量,所有陆地的周长单独算的话周长等于陆地数量*4,但是每个陆地不是独立的,所以每存在相邻的两个陆地,那么周长就要减去2,所以最终的周长就等于陆地数量*4-相邻陆地数量*2。思路:这里判断字符串接龙,每次只能变换一个元素的值,然后到下一个字符串,所以就是找从beginStr字符串开始到endStr字符串的最短路径长度。深搜如果是处理下一个节点的情况,那么就没有了结束条件的判断,因为在循环中就给出了判断条件,如果不满足条件是不会进入递归的。
原创
发布博客 2024.09.26 ·
911 阅读 ·
9 点赞 ·
0 评论 ·
29 收藏

代码随想录算法训练营第52天 | 1、孤岛的总面积,2、沉没孤岛,3、水流问题,4、建造最大岛屿

思路:这里和第1题孤岛总面积的思路是相似的,将和四周边界相关的岛屿置为2或者其他数字,然循环遍历,将孤岛置为0,将之前变为2或者其他数字的岛屿重新置为1,最后打印输出即可。思路:这里所求的孤岛是指不和四周边界有关系的岛屿,所以这里可以采用深搜或者广搜来将和四周边界相关的岛屿置为0,也就是变为水域,这样再进行深搜或者广搜,记录孤岛总面积即可。所以我们这里尝试将本来的岛屿标上号码,并且记录好每块区域的大小,这样当遍历到水域时,查看它四周的方向,取四个方向上能构成岛屿最大的即可,不断更新最终结果,最后返回。
原创
发布博客 2024.09.26 ·
652 阅读 ·
30 点赞 ·
0 评论 ·
16 收藏

代码随想录算法训练营第51天 | 岛屿数量、岛屿的最大面积

给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。这里的深搜没有单独写终止条件,因为在循环里面用if判断过了,不满足情况是不会进入递归的,所以保证了其能够终止。使用广度搜索需要注意标记的时候是在加入队列的时候就要标记,而不是在从队列里面取出来过后才标记,否则会出错。输出一个整数,表示岛屿的最大面积。
原创
发布博客 2024.09.20 ·
448 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

代码随想录算法训练营第50天 | 所有可达路径

例如正确的答案是 `1 3 5`,而不是 `1 3 5 `, 5后面没有空格!
原创
发布博客 2024.09.19 ·
382 阅读 ·
5 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营第49天 | LeetCode42.接雨水、 LeetCode84.柱状图中的最大矩形

给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。思路:接雨水的问题是单调栈中比较经典的问题,这里分为三种思路来讲解。
原创
发布博客 2024.09.17 ·
564 阅读 ·
12 点赞 ·
0 评论 ·
17 收藏

代码随想录算法训练营第48天 | LeetCode739.每日温度、 LeetCode496.下一个更大元素I、 LeetCode503.下一个更大元素II

给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。思路:这里涉及到了单调栈的问题。当我们遇到要求某个元素最左边或者最右边第一个大于或小于该元素的值时,就可以考虑使用单调栈。单调栈的本质就是拿空间换时间,使用一个栈来记录之前已经遍历过的元素,这样可以依据已经遍历过的元素来做出判断,得出结果。所以它的时间复杂度通常是O(n)。单调栈又分为递增栈和递减栈。
原创
发布博客 2024.09.16 ·
941 阅读 ·
30 点赞 ·
0 评论 ·
13 收藏

代码随想录算法训练营第46天 | LeetCode647.回文子串、 LeetCode516.最长回文子序列

给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。思路:在回溯系列也做过求给定字符串的所有回文子串,那里求的是所有的划分结果,这里统计的是回文子串的数目,但是因为回溯本质上是暴力求解,是在没有其他办法的情况下使用的一种方法,复杂度很大,呈指数级别,所以这里不采用回溯。这里采用动态规划和双指针两种方法讲解。
原创
发布博客 2024.09.14 ·
467 阅读 ·
5 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营第45天 | LeetCode115.不同的子序列、 LeetCode583.两个字符串的删除操作、LeetCode72.编辑距离

第三种是替换,之前说元素相等的时候dp[i][j]=dp[i-1][j-1],当元素不相等的时候,不需要删除或者插入元素,而是将不相等的元素换成相等的元素,这样以i-1结尾的字符串word1就能和以j-1结尾的字符串word2相等了,这时操作次数为1,所以这里dp[i][j]=dp[i-1][j-1]+1。而对于当s[i-1]不等于t[j-1]时,那就不可能有s[i-1]去匹配的情况发生,所以就只剩下dp[i-1][j],也就是之前的记录状态,所以这时dp[i][j]=dp[i-1][j]。
原创
发布博客 2024.09.13 ·
712 阅读 ·
7 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营第44天 | LeetCode1143.最长公共子序列、 LeetCode1035.不相交的线、LeetCode53.最大子数组和、LeetCode392.判断子序列

给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。思路:昨天讲了一个,求的是连续的子序列。而这道题求的是最长公共子序列,也就是说序列是非连续的。
原创
发布博客 2024.09.12 ·
1074 阅读 ·
26 点赞 ·
0 评论 ·
16 收藏

代码随想录算法训练营第43天 | LeetCode300.最长递增子序列、LeetCode674.最长连续递增子序列、LeetCode718.最长重复子数组

给你一个整数数组nums,找到其中最长严格递增子序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组的子序列。思路:最长递增子序列,这道题的难点在于如何能够处理不连续的,但是还是递增的序列。或者换句话说,如果递增子序列不是连续的,我如何能够找到这样一段满足题意得递增子序列,并在循环结束后,返回最大长度。
原创
发布博客 2024.09.11 ·
1021 阅读 ·
24 点赞 ·
0 评论 ·
16 收藏

代码随想录算法训练营第42天 | LeetCode188.买卖股票的最佳时机IV、LeetCode309.买卖股票的最佳时机含冷冻期、LeetCode714.买卖股票的最佳时机含手续费

给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次,卖k次。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路:这道题和之前讲的很像,如果前面这道题仔细做了,那么这道题也简单。需要注意得是这里是可以买卖k次,也就是不止买卖2次了。没关系,照样可以做。
原创
发布博客 2024.09.10 ·
956 阅读 ·
28 点赞 ·
0 评论 ·
22 收藏

代码随想录算法训练营第41天 | LeetCode121.买卖股票的最佳时机、LeetCode122.买卖股票的最佳时机II、LeetCode123.买卖股票的最佳时机III

给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。思路:今天讲解股票系列问题。这里是需要从一个标记价格的天数范围内,先买入,再卖出,求最大利润是多少。这里介绍两种方法。
原创
发布博客 2024.09.09 ·
952 阅读 ·
29 点赞 ·
0 评论 ·
26 收藏
加载更多