- 博客(321)
- 收藏
- 关注
原创 leetcode 2799. 统计完全子数组的数目 中等
完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2]。数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10。如果数组中的某个子数组满足下述条件,则称之为。是数组中的一个连续非空序列。
2025-04-24 17:06:12
109
原创 《算法笔记》10.4小节——图算法专题->最短路径 问题 E: 最短路径问题
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;n和m为0时输入结束。给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输出 一行有两个数, 最短距离及其花费。
2025-04-23 14:31:07
97
原创 《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径
第二行输出最短路径上经过的城市名,如果有多条最短路径,输出字典序最小的那条。若不存在从起点到终点的路径,则输出“can't arrive”。有n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离和经过的城市名。接下来m行,每行三个数,分别为两个城市名和距离。每组第一行输入四个数,分别为n,m,s,t。第一行输出起点到终点的最短距离。输入包含多组测试数据。
2025-04-23 14:29:05
129
原创 leetcode 1399. 统计最大组的数目 简单
总共有 4 个组拥有的数字并列最多。的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。总共有 2 个大小为 1 的组 [1],[2]。
2025-04-23 10:51:25
58
原创 《算法笔记》10.4小节——图算法专题->最短路径 问题 C: 最短路径
N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离。N-1行,表示0号城市到其他城市的最短路,如果无法到达,输出-1,数值太大的以MOD 100000 的结果输出。第一行两个正整数N(2<=N<=100)M(M<=500),表示有N个城市,M条道路,接下来M行两个整数,表示相连的两个城市的编号。
2025-04-22 22:04:44
83
原创 leetcode 2145. 统计隐藏数组数目 中等
要求的隐藏数组的数目。如果没有符合要求的隐藏数组,请返回。更正式的表述为:我们将隐藏数组记作。,它们表示隐藏数组中所有数字的值都在。没有符合要求的隐藏数组,所以返回 0。
2025-04-21 08:55:03
207
原创 leetcode 781. 森林中的兔子 中等
因此森林中兔子的最少数量是 5 只:3 只回答的和 2 只没有回答的。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。两只回答了 "1" 的兔子可能有相同的颜色,设为红色。森林中有未知数量的兔子。设回答了 "2" 的兔子为蓝色。,将答案收集到一个整数数组。,返回森林中兔子的最少数量。
2025-04-20 22:54:33
155
原创 leetcode 2563. 统计公平数对的数目 中等
共计 6 个公平数对:(0,3)、(0,4)、(0,5)、(1,3)、(1,4) 和 (1,5)。数对满足以下情况,则认为它是一个。只有单个公平数对:(2,3)。
2025-04-19 12:10:09
368
原创 leetcode 2364. 统计坏数对的数目 中等
数对 (0, 2) 是坏数对,因为 2 - 0!= 3 - 4, 2!数对 (0, 3) 是坏数对,因为 3 - 0!= 3 - 4, 3!数对 (1, 2) 是坏数对,因为 2 - 1!= 3 - 1, 1!数对 (2, 3) 是坏数对,因为 3 - 2!= 3 - 3, 1!数对 (0, 1) 是坏数对,因为 1 - 0!总共有 5 个坏数对,所以我们返回 5。
2025-04-18 12:18:23
193
原创 leetcode 1534. 统计好三元组 简单
一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)]。请你统计其中好三元组的数量。满足下列全部条件,则认为它是一个。不存在满足所有条件的三元组。
2025-04-14 00:12:57
129
原创 leetcode 1922. 统计好数字的数目 中等
长度为 1 的好数字包括 "0","2","4","6","8"。组成的字符串,且可能包含前导 0。由于答案可能会很大,请你将它对。且为好数字的数字字符串。我们称一个数字字符串是。
2025-04-13 23:14:28
310
原创 leetcode 3375. 使数组的值全部为 K 的最少操作次数 简单
依次选择合法整数 7 ,5 ,3 和 1 ,将数组全部变为 1。依次选择合法整数 4 和 2 ,将数组全部变为 2。的数都等于 10 ,但是 5 不是。如果无法将所有元素都变。没法将所有值变为 2。,那么返回 -1。
2025-04-09 15:16:07
340
原创 leetcode 3396. 使数组元素互不相同所需的最少操作次数 简单
空数组也视作为数组元素互不相同。返回使数组元素互不相同所需的。数组中的元素已经互不相同,因此不需要进行任何操作,答案是 0。,你需要确保数组中的元素。
2025-04-08 12:09:45
142
原创 《算法笔记》10.3小节——图算法专题->图的遍历 问题 B: 连通图
每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。分析:和问题A差不多的思路,用并查集检查是否只有一个集合。当然也可以用BFS或者DFS检查是否只有一个连通分量。对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。
2025-04-07 21:32:54
221
原创 《算法笔记》10.3小节——图算法专题->图的遍历 问题 A: 第一题
每个输入文件包含若干行,每行两个整数i,j,表示节点i和j之间存在一条边。该题的目的是要你统计图的连通分支数。输出每个图的联通分支数。
2025-04-07 19:59:53
240
原创 leetcode 416. 分割等和子集 中等
如果 j≥nums[i],即当前需要达到的选取数据之和 j 是大于等于当前要选择的数 nums[i] 时,可以选取也可以不选取,这两种情况只要有一个为 true,就说明在数组的 [0,i] 下标范围内,存在一个选取方案,使得选取的所有数之和达到 j,此时 dp[i][j]=true。如果 j<nums[i],则在选取的数字的和等于 j 的情况下无法选取当前的数字 nums[i],因此有 dp[i][j]=dp[i−1][j]。对于 i>0 且 j>0 的情况,如何确定 dp[i][j] 的值?
2025-04-07 17:24:57
387
原创 leetcode 368. 最大整除子集 中等
如果存在多个有效解子集,返回其中任何一个均可。,请你找出并返回其中最大的整除子集。[1,3] 也会被视为正确答案。
2025-04-06 15:10:47
389
原创 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 E: 合并果子-NOIP2004TGT2
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。例如有3种果子,数目依次为1,2,9。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。
2025-04-05 03:49:23
142
原创 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 D: Haffman编码
现在给你一串字符以及它们所对应的权值,让你构造哈弗曼树,从而确定每个字符的哈弗曼编码。接下来n行,每行有一个字符ch和一个整数weight,表示字符ch所对应的权值,中间用空格隔开。对于每组测试数据,按照输入顺序输出相应的字符以及它们的哈弗曼编码结果,具体格式见样例。4.所有字符为ASCII码表上32-96之间的字符(即“ ”到“`”之间的字符)。2.若两个字符权值相同,则ASCII码值小的字符为左孩子,大的为右孩子;3.创建的新节点所代表的字符与它的做孩子的字符相同;输入包含多组数据(不超过100组)
2025-04-05 03:32:42
186
原创 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 C: 哈夫曼树
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
2025-04-05 03:26:46
213
原创 leetcode 1863. 找出所有子集的异或总和再求和 简单
[5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2。- [1,3] 的异或总和为 1 XOR 3 = 2。- [5,1] 的异或总和为 5 XOR 1 = 4。- [5,6] 的异或总和为 5 XOR 6 = 3。- [1,6] 的异或总和为 1 XOR 6 = 7。每个子集的全部异或总和值之和为 480。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [5] 的异或总和为 5。- [1] 的异或总和为 1。- [6] 的异或总和为 6。
2025-04-05 03:19:30
274
原创 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 B: 算法6-13:自顶向下的赫夫曼编码
在本题中,我们将要讨论的是自顶向下的赫夫曼编码算法。从根出发,遍历整棵赫夫曼树从而求得各个叶子结点所表示的字符串。输入的第一行包含一个正整数n,表示共有n个字符需要编码。其中n不超过100。第二行中有n个用空格隔开的正整数,分别表示n个字符的权值。共n行,每行一个字符串,表示对应字符的赫夫曼编码。
2025-04-05 03:04:09
214
原创 《算法笔记》9.8小节——图算法专题->哈夫曼树 问题 A: 算法6-12:自底向上的赫夫曼编码
在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整个内容的总长便可以减少。另外,需要保证任何一个字符的编码都不是另一个字符的编码前缀,这种编码成为前缀编码。在本题中,读入n个字符所对应的权值,生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。输入的第一行包含一个正整数n,表示共有n个字符需要编码。第二行中有n个用空格隔开的正整数,分别表示n个字符的权值。共n行,每行一个字符串,表示对应字符的赫夫曼编码。
2025-04-05 02:48:25
179
原创 leetcode 1123. 最深叶节点的最近公共祖先
注意,节点 6、0 和 8 也是叶节点,但是它们的深度是 2 ,而节点 7 和 4 的深度是 3。根节点是树中最深的节点,它是它本身的最近公共祖先。树中最深的叶节点是 2 ,最近公共祖先是它自己。我们返回值为 2 的节点,在图中用黄色标记。在图中用蓝色标记的是树的最深的节点。最深的叶节点的最近公共祖先。
2025-04-04 14:56:22
335
原创 leetcode 2874. 有序三元组中的最大值 II 中等
唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3。下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133。下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77。如果所有满足条件的三元组的值都是负数,则返回。可以证明不存在值大于 133 的有序下标三元组。可以证明不存在值大于 77 的有序下标三元组。
2025-04-03 01:16:09
158
原创 leetcode 2873. 有序三元组中的最大值 I 简单
唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3。下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133。下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77。如果所有满足条件的三元组的值都是负数,则返回。可以证明不存在值大于 133 的有序下标三元组。可以证明不存在值大于 77 的有序下标三元组。
2025-04-02 12:44:08
185
原创 《算法笔记》9.7小节——数据结构专题(2)->堆 问题 C: 合并果子(堆)
接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为 12。可以证明15为最小的体力耗费值。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。第二行包含n个整数,用空格分隔,第i个整数ai(1 <= ai <= 20000)是第i种果子的数目。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
2025-04-01 09:45:14
309
原创 leetcode 2140. 解决智力问题 中等
总得分为:3 + 2 = 5。没有别的办法获得 5 分或者多于 5 分。总得分为:2 + 5 = 7。没有别的办法获得 7 分或者多于 7 分。- 解决问题 0 :获得 3 分,但接下来 2 个问题都不能解决。- 解决问题 1 :获得 2 分,但接下来 2 个问题都不能解决。,你可以对下一个问题决定使用哪种操作。解决问题 0 和 3 得到最高分。- 解决问题 3 :获得 2 分。- 解决问题 4 :获得 5 分。请你返回这场考试里你能获得的。- 不能解决问题 1 和 2。- 不能解决问题 2 和 3。
2025-04-01 00:49:48
939
原创 《算法笔记》9.7小节——数据结构专题(2)->堆 问题 B: 序列合并
有两个长度都为N的序列A和B,在A和B中各取一个数相加可以得到N2个和,求这N2个和中最小的N个。输出仅有一行,包含N个整数,从小到大输出这N个最小的和,相邻数字之间用空格隔开。第二行N个整数Ai,满足Ai <= Ai+1且Ai <= 10^9。第三行N个整数Bi,满足Bi <= Bi+1且Bi <= 10^9。第一行一个正整数N(1 <= N <= 100000)。
2025-04-01 00:13:39
103
原创 leetcode 2360. 图中的最长环 困难
图中的最长环是:2 -> 4 -> 3 -> 2。这个环的长度为 3 ,所以返回 3。环,如果没有任何环,请返回。一个环指的是起点和终点是。
2025-03-31 13:56:42
257
原创 leetcode 2109. 向字符串添加空格 中等
描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值。下标 8、13 和 15 对应 "Leetcode。下标 1、5、7 和 9 对应 "i。请你添加空格,并返回修改后的字符串。字符串的第一个字符前可以添加空格。earn" 中加粗斜体字符。接着在这些字符前添加空格。hon" 中加粗斜体字符。接着在这些字符前添加空格。
2025-03-31 13:11:58
237
原创 leetcode 2716. 最小化字符串长度 简单
接着删除下标 1 左侧最近的那个 'd'(位于下标 0)以及下标 1 右侧最近的那个 'd'(位于下标 2)。接着删除下标 2 左侧最近的那个 'a'(位于下标 1)以及下标 2 右侧最近的那个 'a'(位于下标 3)。我们可以选择位于下标 1 处的字符 'a' 开始。接着删除下标 1 左侧最近的那个 'a'(位于下标 0)以及下标 1 右侧最近的那个 'a'(位于下标 2)。下标 1 左侧不存在字符 'b' ,但右侧存在一个字符 'b'(位于下标 2),所以会删除位于下标 2 的字符 'b'。
2025-03-31 13:03:36
186
原创 leetcode 2829. k-avoiding 数组的最小总和 中等
设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18。正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为。可以证明不存在总和小于 18 的 k-avoiding 数组。可以证明不存在总和小于 3 的 k-avoiding 数组。可以构造数组 [1,2] ,其元素总和为 3。数组的可能的最小总和。
2025-03-26 22:21:24
174
原创 《算法笔记》9.6小节 数据结构专题(2)并查集 问题 D: More is better
【代码】《算法笔记》9.6小节 数据结构专题(2)并查集 问题 D: More is better。
2025-03-25 22:37:55
477
原创 leetcode 2711. 对角线上不同值的数量差 中等
第 4 个图表示对单元格 (1,1) 计算,其中蓝色单元格是位于右下对角线的单元格,红色单元格是位于左上对角线的单元格。- 单元格 (0,0) 的右下对角线包含 [1,1] ,而左上对角线包含 []。- 单元格 (1,1) 的右下对角线包含 [1] ,而左上对角线包含 [1]。- 单元格 (0,0) 的右下对角线包含 [] ,左上对角线包含 []。第 2 个图表示对单元格 (0,0) 计算,其中蓝色单元格是位于右下对角线的单元格。是从最顶行或最左列的某个单元格开始,向右下方向走到矩阵末尾的对角线。
2025-03-25 09:50:23
319
原创 《算法笔记》9.5小节——数据结构专题(2)->平衡二叉树(AVL) 问题 A: 算法9-9~9-12:平衡二叉树的基本操作
若将二叉树上结点的平衡因子定义为该结点的左子树深度减去它的右子树的深度,则平衡二叉树上的所有结点的平衡因子只可能为-1、0和1。在本题中,首先需要按照题目描述中的算法完成平衡二叉树的构造过程,之后需要通过在平衡二叉树中的不断向下查找,将需要查询的值与当前节点的值进行比较,直到确定被查询的值是否存在。通过课本中的性能分析部分,不难发现平衡二叉树的查找、插入、删除等操作的时间复杂度均为O(log2n),这是通过利用旋转操作使二叉树保持平衡状态而保证的。第三行包含k个用空格隔开的正整数,表示k次查询的目标。
2025-03-24 19:22:28
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人