- 博客(52)
- 收藏
- 关注
原创 2025-4-2
给定一个 N×MN×M 的网格迷宫 GG。GG 的每个格子要么是道路,要么是障碍物(道路用 11 表示,障碍物用 00 表示)。已知迷宫的入口位置为 (x1,y1)(x1,y1),出口位置为 (x2,y2)(x2,y2)。问从入口走到出口,最少要走多少个格子。
2025-04-02 15:08:17
132
原创 2025-4-1算法打卡
蓝桥幼儿园的学生是如此的天真无邪,以至于对他们来说,朋友的朋友就是自己的朋友。小明是蓝桥幼儿园的老师,这天他决定为学生们举办一个交友活动,活动规则如下:小明会用红绳连接两名学生,被连中的两个学生将成为朋友。小明想让所有学生都互相成为朋友,但是蓝桥幼儿园的学生实在太多了,他无法用肉眼判断某两个学生是否为朋友。于是他起来了作为编程大师的你,请你帮忙写程序判断某两个学生是否为朋友(默认自己和自己也是朋友)。
2025-04-02 00:10:26
284
原创 2025-3-30算法打卡
小明拥有 NN 个彩灯,第 ii 个彩灯的初始亮度为 aiai。小明将进行 QQ 次操作,每次操作可选择一段区间,并使区间内彩灯的亮度 +x+x(xx 可能为负数)。求 QQ 次操作后每个彩灯的亮度(若彩灯亮度为负数则输出 00)。
2025-03-30 23:56:22
209
原创 2025-3-27算法打卡
小明喜欢观景,于是今天他来到了蓝桥公园。已知公园有 NN 个景点,景点和景点之间一共有 MM 条道路。小明有 QQ 个观景计划,每个计划包含一个起点 stst 和一个终点 eded,表示他想从 stst 去到 eded。但是小明的体力有限,对于每个计划他想走最少的路完成,你可以帮帮他吗?
2025-03-27 18:37:21
276
原创 2025-3-26算法打卡
小明有一个容量为 VV 的背包。这天他去商场购物,商场一共有 NN 件物品,第 ii 件物品的体积为 wiwi,价值为 vivi。小明想知道在购买的物品总体积不超过 VV 的情况下所能获得的最大价值为多少,请你帮他算算。
2025-03-26 17:52:34
294
原创 2025-3-25算法打卡
给定一个 N×MN×M 的网格迷宫 GG。GG 的每个格子要么是道路,要么是障碍物(道路用 11 表示,障碍物用 00 表示)。已知迷宫的入口位置为 (x1,y1)(x1,y1),出口位置为 (x2,y2)(x2,y2)。问从入口走到出口,最少要走多少个格子。
2025-03-25 21:17:03
489
原创 2025-3-19算法打卡
如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。从dp[i]的定义上来讲,dp[0] 一定是 nums[0],dp[1]就是nums[0]和nums[1]的最大值即:dp[1] = max(nums[0], nums[1]);然后dp[i]取最大值,即dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
2025-03-19 15:35:47
947
原创 2025-3-18算法打卡
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。
2025-03-18 10:08:09
303
原创 2025-3-18算法打卡
可以看出元素1在[1,2]中已经使用过了,但是在[2,1]中还要在使用一次1,所以处理排列问题就不用使用startIndex了。因为排列问题,每次都要从头开始搜索,例如元素1在[1,2]中已经使用过了,但是在[2,1]中还要再使用一次1。当收集元素的数组path的大小达到和nums数组一样大的时候,说明找到了一个全排列,也表示到达了叶子节点。最大的不同就是for循环里不用startIndex了。可以看出叶子节点,就是收割结果的地方。给定一个不含重复数字的数组。返回所有不重复的全排列。
2025-03-18 10:05:31
529
原创 2025-3-17算法打卡
一个是j * dp[i - j],相当于是拆分(i - j),对这个拆分不理解的话,可以回想dp数组的定义。dp[i]的定义将贯彻整个解题过程,下面哪一步想不懂了,就想想dp[i]究竟表示的是啥!dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。其实可以从1遍历j,然后有两种渠道得到dp[i].可以想 dp[i]最大乘积是怎么得到的呢?一个是j * (i - j) 直接相乘。通过比较两种方法的最大值可以输出答案。),并使这些整数的乘积最大化。你可以获得的最大乘积。
2025-03-17 16:50:34
282
原创 2025-3-17算法打卡
1. 向右 -> 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右 -> 向右。机器人每次只能向下或者向右移动一步。返回机器人能够到达右下角的不同路径数量。机器人的移动路径中不能包含。3x3 网格的正中间有一个障碍物。网格中的障碍物和空位置分别用。将障碍物的对应位置看作0个方法。测试用例保证答案小于等于。从左上角到右下角一共有。
2025-03-17 15:30:49
350
原创 2025-3-17算法打卡
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。3. 向下 -> 向右 -> 向下。问总共有多少条不同的路径?
2025-03-17 11:39:51
248
原创 2025-3-17算法打卡
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。
2025-03-17 11:04:00
623
原创 2025-3-12算法打卡
斐波那契数 (通常用 表示)形成的序列称为 斐波那契数列 。该数列由 和 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 ,请计算 。示例 1:输入:n = 2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:n = 3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例
2025-03-12 09:06:04
637
原创 2025-3-8算法打卡
对于一个有n 位的十进制数N = d1d2d3 ... dn,可以生成一个类斐波那契数列S ,数列S 的前n 个数为{S1 = d1, S2 = d2, S3 = d3...,Sn = dn},数列S 的第k(k > n) 个数为Σk-1i=k-n Si。如果这个数N 会出现在对应的类斐波那契数列S中,那么N 就是一个类斐波那契循环数。: : : g,197 出现在S 中,所以197 是一个类斐波那契循环数。在0至10^7范围内,最大的类斐波那契循环数(即Keith数)是。
2025-03-09 01:31:48
309
原创 2025-3-8算法打卡
由于今年是2024 年,他们决定要从小到大轮流报出是20 或24 倍数的正整数。前10 个被报出的数是:20;要解决这个问题,我们需要找到从小到大排列的能被20或24整除的正整数序列中的第202420242024个数。直接遍历所有数显然不现实,因此我们采用数学方法和二分查找来高效地解决这个问题。:计算能被20或24整除的数的数量,需要减去同时被两者整除的数以避免重复。,并且x本身是20或24的倍数。二分法的时间复杂度为O(log N),适合处理大数问题。:通过二分法快速找到满足条件的最小值x,使得。
2025-03-09 01:09:43
288
原创 25-3-6算法打卡
所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。判断sum是否重复出现就可以使用unordered_set。这道题目看上去貌似一道数学问题,其实并不是!编写一个算法来判断一个数。
2025-03-06 19:53:40
263
原创 2025-3-5算法打卡
因为题目说只有小写字母,那可以采用空间换取时间的哈希策略,用一个长度为26的数组来记录magazine里字母出现的次数。然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。一些同学可能想,用数组干啥,都用map完事了,依然是数组在哈希法中的应用。
2025-03-05 15:37:09
184
原创 2025-3-4算法打卡
还要说明一下,就算使用C++来做leetcode,如果移除一个节点之后,没有手动在内存中删除这个节点,leetcode依然也是可以通过的,只不过,内存使用的空间大一些而已,但建议依然要养成手动清理内存的习惯。那么因为单链表的特殊性,只能指向下一个节点,刚刚删除的是链表的中第二个,和第四个节点,那么如果删除的是头结点又该怎么办呢?这种情况下的移除操作,就是让节点next指针直接指向下下一个节点就可以了,可以说这五个接口,已经覆盖了链表的常见操作,是练习链表操作非常好的一道题目。是指向下一个节点的指针/引用。
2025-03-04 10:04:59
540
原创 2025-3-4算法打卡
所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。判断sum是否重复出现就可以使用unordered_set。这道题目看上去貌似一道数学问题,其实并不是!编写一个算法来判断一个数。
2025-03-04 00:24:19
240
原创 2025-3-2算法打卡
那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。最后如果record数组所有元素都为零0,说明字符串s和t是字母异位词,return true。定义一个数组叫做record用来上记录字符串s里字符出现的次数。这样就将字符串s中字符出现的次数,统计出来了。需要把字符映射到数组也就是哈希表的索引下标上,再遍历 字符串s的时候,
2025-03-02 20:18:36
250
原创 2025-2-25算法打卡
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(,再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。// 返回 False。在push数据的时候,只要数据放进输入栈就好,myStack.top();最后如何判断队列为空呢?
2025-02-25 09:30:39
606
原创 2025-5-21算法打卡
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
2025-02-21 16:03:36
320
原创 2025-2-17算法打卡
则说明数组的长度正好可以被 最长相等前后缀不包含的子串的长度 整除 ,说明该字符串有重复的子字符串。,则说明字符串有最长相同的前后缀(就是字符串里的前缀子串和后缀子串相同的最长长度)。(这里的next数组是以统一减一的方式计算的,因此需要+1,数组长度为:len。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。,检查是否可以通过由它的一个子串重复多次构成。是最长相等前后缀不包含的子串的长度。可由子串 "ab" 重复两次构成。
2025-02-17 19:30:07
346
原创 2025-2-14算法打卡
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。
2025-02-14 23:53:33
334
原创 2025-2-12算法打卡
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。
2025-02-13 01:28:05
170
原创 2025-2-11算法打卡
先按[0, k),[2k, 3k),[4k,5k)... ...依次分为多个区间,最后一个区间按题目要求确定边界,再按照区间分别用双指针将区间字符串反转即可。用两个指针 i 和 j,初始时分别指向数组的首尾,每次将 i 和 j 对应的元素交换,然后 i 向后移动,j 向前移动,直到 i 和 j 相遇。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
2025-02-11 21:22:16
367
原创 2025-2-5算法打卡
因为题目说只有小写字母,那可以采用空间换取时间的哈希策略,用一个长度为26的数组来记录magazine里字母出现的次数。然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。,请你计算有多少个元组。
2025-02-06 01:08:39
804
原创 2025-2-4算法打卡
在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。整数,并返回它们的数组下标。,请你在该数组中找出。
2025-02-05 01:20:47
770
原创 2025-1-19算法打卡
如果y的前元素x不存在,让y=z即可;二,当数组长度大于等于3时,出现前一个元素y大于后一个元素z时,综合以上可以得到:当x存在且x>z,就让z=y,否则让y=z。每次使n-1个元素+1完全等效于每次使1个元素-1然后所有元素+1。所以只需找出:每次让1个元素-1,多少次后所有元素相等。你不能在只改变一个元素的情况下将其变为非递减数列。个元素的情况下,该数组能否变成一个非递减数列。3,当x=z,让y=z。1,当x<z,让y=z。2,当x>z,让z=y。
2025-01-19 20:50:00
250
原创 2025-1-18算法打卡
对于某个ans[i][j]而言,我们可以直接计算出其所在item的左上角(a,b)=(i−1,j−1)以及其右下角(c,d)=(i+1,j+1),同时为了防止超出原矩阵,我们需要将(a,b)与(c,d)对边界分别取max和min。对于点(0,1),(1,0),(1,2),(2,1):floor((200+200+50+200+100+100)/6)=floor(141.666667)=141。,返回对图像的每个单元格平滑处理后的图像。,返回「杨辉三角」的第。
2025-01-19 00:53:06
673
原创 2025-1-18算法打卡
且仅使用常量额外空间(不包括存储输出所需的空间)的算法解决此问题。中的数字,并以数组的形式返回结果。你必须设计并实现一个时间复杂度为。的整数,并以数组形式返回。
2025-01-18 01:12:16
419
原创 2025-1-16算法打卡
注意本题没有保证 k 小于数组长度 n。由于轮转 n 次等于没有轮转,轮转 n+1 等于轮转 1 次,依此类推,轮转 k 次等于轮转 kmodn 次。两个舰队之间至少有一个水平或垂直的空格分隔 (即没有相邻的舰队)。我们可以遍历矩阵,找到每个战舰的左上角,即当前位置为。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]表示棋盘,其中,每个单元格可以是一艘战舰。换句话说,舰队只能按。,将数组中的元素向右轮转。列)的形状放置,其中。的位置,将答案加一。
2025-01-16 20:37:21
293
原创 2025-1-16算法打卡
思路:用两个变量标记第一行和第一列是否有0,接着循环一遍矩阵,如果遇见0,将和这个网格相同的第一行和第一列的元素标记成0,在循环矩阵,如果当前网格对应的第一行和第一列是0,则将这个单元格置为0。最后如果第一列有0 ,则将这第一列全部置为0,如果第一行有0 ,则将这第一行全部置为0。对于第 times 层矩形框,其框边长 len=nums−(times∗2),将其顺时针分为 4 份 len−1 的边,对四条边进行元素的循环交换即可。旋转图像,这意味着你需要直接修改输入的二维矩阵。使用另一个矩阵来旋转图像。
2025-01-16 00:07:39
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人