自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 爬楼梯(进阶版)

没什么难的,就是一个排序的01背包问题,秒了。

2024-05-29 10:12:54 253

原创 LeetCode 377.组合总和Ⅳ

这题是我蠢了,它说是组合数我就信了,言尽于此。

2024-05-28 11:57:08 282

原创 LeetCode 518.零钱兑换Ⅱ

如果先遍历背包容量,可以看作是对于每一种背包容量,依次把每个物品放进去试试,而因为当前背包容量与之前背包的状态有关,那么这个步骤我觉得可以看作就是对数的一个排列,顺序不同也会影响到结果。在完全背包问题里面,如果是求最大重量的话,那么这两个遍历顺序是无所谓的。如果先遍历物品,可以理解为把每个物品分别放到不同容量的背包里面试试,看看能不能装下。这题和之前做的不大一样,之前的动态规划转化成背包问题一般都是求能放入的最大重量,这个是求组合数。组合数内部的顺序不影响答案,排序数内部的数字的顺序也可以构成不同答案。

2024-05-28 11:34:12 577

原创 LeetCode 474.一和零

可以发现其实[i][j]就是[j],只是二维表示了,而起初的外层循环为遍历物品,这里省去了,因为每次都是只涉及不变和+1,该题中两层遍历都是对背包容量的遍历。这个题的处理点在于把背包的容量变成二维,初始的dp[i]表示容量为i的背包可放入的最大物品数,现在d[i][j]为最多有i个0和j个1的str最大子集个数。状态转移方程:dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);没做出来,最后看了解析,看了半天才懂。

2024-05-27 17:20:12 394

原创 LeetCode 494.目标和

令x为数字前为+的总和,则数字前面为 ‘ - ’ 的数字的和为sum-x,那么 target=x-(sum-x) 即 x=(target+sum)/2 如果把这个题转化为01背包问题,那么 bagsize=x。2.因为(target+sum)/2是向下取整,所以这个时候解是不存在的。1.target>sum,这个时候再怎么也凑不满数字。状态转移方程:dp[j]+=dp[j-nums[i]];即每次可行的解都是前面所有解的和,这是一个组合问题。

2024-05-26 19:07:35 182

原创 LeetCode 1049.最后一块石头的重量

这个过程总体来说可以简化为把石头分为两堆去碰,如果重量一样最后重量就是0,否则就是留下最小的石头。

2024-05-26 14:57:11 214

原创 LeetCode 343.整数拆分

j*(i-j),即把该数分为两个数的乘积,dp[i-j]*j,把数字 i 分成 j 和其他多个数的乘积,转移方程 :dp[i]=max(dp[i],max(j*(i-j),dp[i-j]*j));dp[i]就是每次选出最大值而已。dp[i]:数字 i 拆分产生的最大乘积。

2024-05-26 00:15:59 234

原创 LeetCode 416.分割等和子集

转化为01背包,背包容量为sun/2。

2024-05-26 00:10:42 224

原创 LeetCode 63.不同路径Ⅱ

在有障碍物的地方增加一个判断即可。

2024-05-21 11:48:16 258

原创 LeetCode 62.不同路径

一:向右走到达dp[i][j]的,即从dp[i][j-1]来的。二:向下走到达dp[i][j]的,即从dp[i-1][j]来的。因为只能向下或者向右走,所以dp[i][j]的来源有两个。dp[i][j]:到达第i行第j列的路径数量。

2024-05-20 17:48:58 114

原创 LeetCode 746.最小花费爬楼梯

因为题目描述可以选择第0或者第1台阶作为开始,那么可以看作0和1台阶都是免费的,所以初始化dp[0]=dp[1]=0。一:从第i-1个台阶走一步上去的,花费 dp[i-1]+cost[i-1]二:从第i-2个台阶走一步上去的,花费 dp[i-2]+cost[i-2]dp[i]:爬到第i个台阶花费的最小值。

2024-05-20 17:34:56 204

原创 (超详细版)山东大学计算机系统原理 实验三 bomb(拆炸弹)

这个实验算是我最喜欢的实验了,感觉跟闯关一样很有意思,第六个炸弹我还是在出去玩的高铁上拆完的,所以想记录一下自己完成这个的思路和过程,也算是给后面的学弟学妹们一个参考,大家还是要自己完成,这个真的很有意思。

2024-05-11 22:33:59 2179

原创 计算机系统原理 实验四 设计MIPS五级流水线模拟器中的Cache

这部分感觉写着很有意思,写之前一脸懵逼,感觉一学期什么都没学懂,写完后对cache方面的知识确实有了飞一般地认知,希望后面的学弟学妹们不要照抄,关键部分注释我都写得比较明白,还是要理解为主,希望大家都能自己写写,这个挺好玩的那么话不多说,代码放这里了。

2024-05-11 21:40:07 233

原创 树的重心(树的dfs)

那么如何得到这三个部分的节点数量,如图在k点进行dfs,通过邻接矩阵在k点的左孩子和右孩子分别进行dfs,然后(n-B-C)就是A的节点数量。整体框架为树的dfs,每次在二叉树中模拟删除一个节点,会把树划分成3部分,如下图。我们的目的是让划分出的最大部分最小。

2024-05-06 16:53:04 181 1

原创 spfa最短路

spfa算法求最短路和dijkstra算法的区别在于D算法在求最短路时,是每次取队列中到源点最小的点 ,visit数组的状态不可以改变,而S算法是每次把被松弛的所有点放进去,visit数组可以改变,visit代表该点是否在队列中,这也Spfa算法可以求负环的原因。

2024-04-22 17:23:23 123

原创 spfa判断负环

每次进行松弛的时候记录下每个点前驱边数,就是起点到该点经历了几条边,如果到达该点的最短路的边数大于等于n,就说明存在负环,因为只有在有负环的情况下dis[i]会不断减小而导致前驱边数大于等于n,用cnt数组记录每个点的前驱边数。代码总体难度还是不大,还是要体会思想。

2024-04-22 16:25:41 175

原创 Leetcode127.单词接龙

因为求的是最短路径,所以理所当然使用bfs,从 beginWord 开始,每次列举这个单词能变换的所有情况,如果在 wordList 中,就放入队列里继续进行 bfs,每次维护一个 path 用来记录变换成这个单词变换的次数。

2024-04-16 11:41:27 180 1

原创 关于二刷Leetcode827.最大的岛屿

心态崩了,整体的代码倒是没出什么问题,思路也很清晰,但是调试了将近一个小时才通过,原因就是在最后遍历0的三重循环中写错了循环的变量,在找到一个0后要把其上下左右的岛屿大小加起来,本来应该是 fx=i+dx[k],fy=y+dy[k],我把k写成i了,调试的时候一直以为是函数体的问题,一直在看函数部分,以为参数没有修改成功。吐了,写代码真的要细心,不要快...

2024-04-15 10:56:13 129 1

原创 Leetcode827.最大人工岛

之后遍历地图,在为0的地方把上下左右的岛的面积加起来就可以了。一开始我的想法是用回溯法,遍历所有岛屿,然后把0改成1后用dfs求出相邻的岛屿的面积,最后取最大,提交的时候不出意外的超时了,很惨。首先,这个题对我来说真的很恶心,因为是刚刚刷图论的题目,一下子感觉上难度了,做了正正一个下午。然后看了题解的思路,是先求出每个岛的面积,组成岛的每个块打上的标记,每个岛标记不一样,并且存在map里面。将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。由一组上、下、左、右四个方向相连的。中最大的岛屿面积是多少?

2024-04-13 19:58:19 198

原创 Leetcode417.太平洋大西洋水流问题

一开始我从两边遍历的时候,想的是找到一条能直接到另一个海的路,然后两边遍历完找公共部分,这样是不对的,因为我们的目的不是让一条海水流到另一个海,而是在岛上有一个点能流向两个海,所以这个路径是不连通的,从该点开始断开。然后就是在逆流而上处理的时候,应该是判断heights[x][y]>heights[fx][fy]无效,因为此时我们是逆着路走的,并不是海水到岛里,而是岛上的雨水流到大海中,所以这里的判断是反过来的。“太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。

2024-04-13 18:22:26 264

原创 Leetcode130.被围绕的岛屿

首先也是从四个边开始遍历,找到为'O'的点后进行深搜,然后把该点能到达的且也为'O'的点在visit中标记为true,而 其他为'O'但是在visit中为false的点就是需要改为'X'的点,遍历完再对整个图进行遍历修改就行了。被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为 'X'。任何不在边界上,或不与边界上的 'O'相连的 'O'最终都会被填充为 'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。围绕的区域,并将这些区域里所有的。

2024-04-13 12:44:42 405

原创 魔板(平面魔方)隐式图

这个题是一个隐式图的做法,因为是要找出最少的次数,所以可以联想到使用bfs求最短路。首先我们把二维的数组转化为一维的字符串操作,我是直接写出每个操作的答案,有些大佬可能是算循环和其他方法转化得来的。然后把每次求出三个操作变化下的序列,记录操作顺序即可。

2024-04-13 11:45:51 245

原创 Leetcode 1020.飞地的数量

分别对四个边进行遍历,对边上的'1'进行深搜,同时把搜索过程中找到的1都置0,即把从陆地能到达的岛屿变成海洋。然后对整个矩形进行遍历,对1进行深搜,找到剩余1的数量。

2024-04-09 11:36:29 151 1

原创 Leetcode 695.岛屿最大面积

我使用的是广搜,在为'1'的坐标进行广搜,每次在把一个岛屿的关联坐标处理的同时计算面积s就可以了。

2024-04-09 10:47:01 225 1

原创 Leetcode 200.岛屿数量

【代码】Leetcode 200.岛屿数量。

2024-04-08 18:00:17 193

原创 关于计组中虚拟存储器的概念和计算大题(页式储存)

关于虚拟储存器的一些整理和考试大题

2023-12-28 21:42:28 1201 1

原创 关于Cache容量的一些概念和计算

关于Cache的一些个人模糊概念梳理

2023-12-27 15:51:49 3422 1

原创 leetcode 20.有效的括号

给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。

2023-10-07 16:43:39 47 1

原创 CM11 链表分割

将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序

2023-09-30 13:22:06 41

原创 链表中倒数第k个结点

输入一个链表,输出该链表中倒数第k个结点。

2023-09-30 11:04:06 38

原创 leetcode876.链表的中间结点

该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。如果有两个中间结点,则返回第二个中间结点。,请你找出并返回链表的中间结点。链表只有一个中间结点,值为 3。

2023-09-30 10:46:45 32

原创 leetcode 21.合并两个有序链表

新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2023-09-29 22:49:24 73

原创 leetcode206. 反转链表

【代码】leetcode206. 反转链表。

2023-09-24 11:36:32 62 1

原创 leetcode 203.移除链表元素

创造一个新的链表,从头遍历原链表,将不等于val的结点接在新链表上,相当于有条件的链表尾插。在做这题的时候遇到不少的坑,因此在此着重提醒一下,以后做相关的题也会遇到很多类似的坑点。的next指针依然是指向原链表的下一个结点,因此最传出。为违法操作,产生了野指针,因此需要特判。产生了野指针,因此出循环后需要对。若原链表本就为空,后续。,这时所有结点都被删除,

2023-09-23 21:41:14 56 1

空空如也

空空如也

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

TA关注的人

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