自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 盛最多水的容器

接着,判断两个指针所指向的元素的高度,将较小的元素的指针向内移动一步。首先,初始时左指针指向数组的起始位置,右指针指向数组的结束位置。计算当前区间内的容器的盛水量,并更新最大盛水量。a.初始化最大盛水量 ret 为 0,左指针 left 指向数组起始位置,右指针 right 指向数组结束位置。重复上述步骤,直到两个指针相遇,即左指针大于等于右指针。此时遍历完成,返回最大盛水量。◦ 判断两个指针所指向元素的高度,将较小元素的指针向内移动一步。◦ 更新最大盛水量,取当前盛水量与历史最大盛水量的较大值。

2023-12-18 10:54:46 30 1

原创 岛屿数量问题

但是这题我们可以简便一下,每次遇到岛屿就用dfs把岛屿淹没了,这样就可以避免使用观测数组来标记一个岛屿是否被观测过。这题关键在于如何寻找并标记「岛屿」,这就要 DFS 算法发挥作用了。dfs的基本框架如下。

2023-12-16 11:35:27 45 1

原创 DFS-全排列

因为递归函数,每调用一次都会开辟一个新的栈帧,对于之前一次的递归调用选了哪个数字,下一次调用的递归函数栈帧中并没有保存,所以只有我们自己知道,计算机并不知道;而且既然已经搜索了n次,说明存储答案的数组也已经满了,在退出之前可以对答案数组进行输出;这个问题是一个排列问题,排列是指对一定量(比如n个)元素进行任意组合,那我们不妨用。对于这个问题,我们会用到dfs,会用到递归,既然会用到递归那就要想到递归出口;在递归过程中,如何避免选到重复的数也一样是问题的关键;如果选定一个合理的出口?

2023-12-14 11:09:19 33 1

原创 链表的中间结点

本题采用“快慢指针”解决,慢指针一次走一步,快指针一次走两步,不过需要注意的是本题受到节点总数是奇偶的影响,当节点总数是奇数时,fast->next == NULL,slow就指向了中间结点;当节点总数是偶数时,fast == NULL,slow就指向了中间结点,所以循环条件有两个。再执行循环条件fast->next会导致空指针异常,越界了,但是fast写在前面就不会出现上述情况,因为&&存在短路求值。

2023-12-13 15:27:44 28 1

原创 买卖股票与分发糖果

贪心算法(greedy algorithm,又称)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心的是选择每一阶段的局部最优,从而达到全局最优。

2023-12-12 15:34:38 34

原创 打家劫舍系列

考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。决定dp[i]的因素就是第i房间偷还是不偷。如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。如果不偷第i房间,那么dp[i] = dp[i - 1],即考虑i-1房,(注意这里是考虑,并不是一定要偷i-1房)

2023-12-11 11:49:14 30 1

原创 01背包与完全背包

在之前的文章里写过01背包的问题,我们在这篇文章里与完全背包问题作比较,并做一点补充。

2023-12-10 15:52:35 26 1

原创 BFS-腐烂的橘子

1.首先,将开始腐烂的橘子坐标加入队列,遍历这个橘子后,将其上、下、左、右四个方向的橘子入队(下一轮腐烂的橘子)。由于题目要求是返回最小完全腐烂的时间,所以,用深度优先搜索很不好做,并且这道题的腐烂传染方式很适合BFS。2.接着,按照队列的顺序将橘子出队,遍历并将其上、下、左、右四个方向的橘子结点入队。最后,检查是否有新鲜橘子,如果有,返回-1,没有,返回分钟数。3.将一轮腐烂的橘子遍历完后,计时+1分钟。4.重复2、3过程,直到队列为空。

2023-12-09 15:39:25 67

原创 KMP算法

KMP算法的作用是在一个已知字符串中查找子串的位置,也叫做串的模式匹配。在这里主串s,子串t的下标都从1开始算起。核心在于求next数组。

2023-12-08 21:51:06 45

原创 动态规划-编辑距离

那我们就定义 dp[i] [j]的含义为:当字符串 word1 的长度为 i,字符串 word2 的长度为 j 时,将 word1 转化为 word2 所使用的最少操作次数为 dp[i] [j]。一、如果我们 word1[i] 与 word2 [j] 相等,这个时候不需要进行任何操作,显然有 dp[i] [j] = dp[i-1] [j-1]。(1)、如果把字符 word1[i] 替换成与 word2[j] 相等,则有 dp[i] [j] = dp[i-1] [j-1] + 1;

2023-12-07 17:32:17 38

原创 dfs-迷宫问题

1.先判断是否到达目标位置,如果到达目标位置,再试探有无其他更短的路径。2.如果没有到达目标位置,则找到下一步可以到达的位置,直到找到目标位置。首先要进行搜索,对搜索方向的顺序规定为:右--下--左--上。找到其他路径,最终得出一个最短路径。在到达终点后要进行回溯,利用。

2023-12-07 11:43:33 604

原创 动态规划-背包问题,最小路径和

用(n,v)来表示物品数和容量 ,每一次有装和不装两种选择为了方便理解,这里用v表示物品的体积,w表示物品的价值,用dp[i][j]来表示j体积下前i个物品的最大价值dp数组不需初始化,直接找出dp之间的关系即可。

2023-12-06 22:13:19 50

空空如也

空空如也

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

TA关注的人

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