- 博客(217)
- 收藏
- 关注
原创 LeetCode 1797. 设计一个验证系统(C++)
你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同)时刻延长 timeToLive 秒。请你实现 AuthenticationManager 类
2023-03-16 11:37:05
557
1
原创 LeetCode 1233. 删除子文件夹(C++)
如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的 子文件夹。例如,“/leetcode” 和 “/leetcode/problems” 都是有效的路径,而空字符串和 “/” 不是。解释:文件夹 “/a/b/c” 和 “/a/b/d” 都会被删除,因为它们都是 “/a” 的子文件夹。解释:“/a/b” 是 “/a” 的子文件夹,而 “/c/d/e” 是 “/c/d” 的子文件夹。folder[i] 只包含小写字母和 ‘/’
2023-03-15 10:53:50
423
原创 LeetCode 1604. 警告一小时内使用相同员工卡大于等于三次的人(C++)
力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次,这个系统会自动发布一个 警告 。请你返回去重后的收到系统警告的员工名字,将它们按 字典序升序 排序后返回给你字符串数组 keyName 和 keyTime ,其中 [keyName[i], keyTime[i]] 对应一个人的名字和他在 某一天 内使用员工卡的时间。
2023-03-14 11:55:44
649
1
原创 LeetCode 1210. 穿过迷宫的最少移动次数(C++)*
我们在一个 n*n 的网格上构建了新的迷宫地图,蛇的长度为 2,它会占去两个单元格。蛇会从左上角((0, 0) 和 (0, 1))开始移动到迷宫的右下角((n-1, n-2) 和 (n-1, n-1))。如果没有障碍,则向下or向右移动一个单元格。并仍然保持身体的水平/竖直状态;如果它处于水平状态并且其下面的两个单元都是空的,就顺时针旋转 90 度;如果它处于竖直状态并且其右面的两个单元都是空的就逆时针旋转 90 度返回蛇抵达目的地所需的最少移动次数
2023-03-12 11:00:48
532
原创 LeetCode 1798. 你能构造出连续值的最大数目(C++)
给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以 构造 出 x 。请返回从 0 开始(包括 0 ),你最多能 构造 出多少个连续整数。你可能有多个相同值的硬币
2023-03-02 10:37:05
221
原创 LeetCode 1145. 二叉树着色游戏(C++)
一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。一号」玩家先手。每一回合,玩家选择一个被他染过色的节点,将所选节点一个 未着色 的邻节点进行染色。如果当前玩家无法找到这样的节点来染色时,其回合就会被跳过。若两个玩家都没有可以染色的节点时,游戏结束。着色节点最多的那位玩家获得胜利。假设你是「二号」玩家,假如存在一个 y 值可以确保你赢得这场游戏,则返回 true ;若无法获胜,就请返回 false
2023-03-01 10:37:09
190
原创 LeetCode 1129. 颜色交替的最短路径(C++)*
给定一个整数 n,即有向图中的节点数,其中节点标记为 0 到 n - 1。图中的每条边为红色或者蓝色,并且可能存在自环或平行边。给定两个数组 ,其中redEdges[i] = [ai, bi] 表示图中存在一条从节点 ai 到节点 bi 的红色有向边,blueEdges[j] = [uj, vj] 表示图中存在一条从节点 uj 到节点 vj 的蓝色有向边。返回长度为 n 的数组 answer,其中 answer[X] 是从节点 0 到节点 X 的红色边和蓝色边交替出现的最短路径的长度or-1
2023-02-22 21:27:21
176
原创 LeetCode 1669. 合并两个链表(C++)
给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你返回结果链表的头指针。请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。
2023-02-15 22:16:00
254
原创 LeetCode 1664. 生成平衡数组的方案数(C++)
给你一个整数数组 nums 。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组 。请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数 。
2023-02-14 12:35:39
374
原创 LeetCode 1663. 具有给定数值的最小字符串(C++)
小写字符 的 数值 是它在字母表中的位置(从 1 开始),因此 a 的数值为 1 ,b 的数值为 2 ,c 的数值为 3 ,以此类推。字符串由若干小写字符组成,字符串的数值 为各字符的数值之和。例如,字符串 "abe" 的数值等于 1 + 2 + 5 = 8 。给你两个整数 n 和 k 。返回 长度 等于 n 且 数值 等于 k 的 字典序最小 的字符串。
2023-02-06 10:44:18
95
原创 LeetCode 1824. 最少侧跳次数(C++)*
给你一个长度为 n 的 3 跑道道路 ,它总共包含 n + 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。任何一个点的三条跑道中 最多有一个 障碍。这只青蛙从点 i 跳到点 i + 1 且跑道不变的前提是点 i + 1 的同一跑道上没有障碍。这只青蛙也可以在 同一个 点处 侧跳 到 另外一条 跑道(这两条跑道可以不相邻),但前提是跳过去的跑道该点处没有障碍。请你返回 最少侧跳次数 。
2023-02-02 12:08:35
338
原创 LeetCode 1814. 统计一个数组中好对子的数目(C++)
给你一个数组 nums ,数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得到的结果。比方说 rev(123) = 321 , rev(120) = 21 。我们称满足下面条件的下标对 (i, j) 是 好的 :0
2023-01-30 12:30:29
116
原创 LeetCode 1813. 句子相似性 III(C++)
一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。每个单词都 只 包含大写和小写英文字母。如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的;给你两个句子 sentence1 和 sentence2 ,如果 sentence1 和 sentence2 是相似的,请你返回 true ,否则返回 false 。
2023-01-29 11:47:46
402
原创 LeetCode 1819. 序列中不同最大公约数的数目(C++)*
给你一个由正整数组成的数组 nums 。数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。例如,序列 [4,6,16] 的最大公约数是 2 。数组的一个 子序列 本质是一个序列,可以通过删除数组中的某些元素(或者不删除)得到。
2023-01-28 14:18:28
590
原创 LeetCode 1807. 替换字符串中的括号内容(C++)
给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。你需要替换 所有 的括号对。当你替换一个括号对,且它包含的键为 keyi 时,你需要:将 keyi 和括号用对应的值 valuei 替换。如果从 knowledge 中无法得知某个键对应的值,你需要将 keyi 和括号用问号 "?" 替换(不需要引号)。knowledge 中每个键最多只会出现一次。s 中不会有嵌套的括号。请你返回替换 所有 括号对后的结果字符串。
2023-01-27 11:02:48
634
原创 LeetCode 1806. 还原排列的最少操作步数(C++)
给你一个偶数 n ,已知存在一个长度为 n 的排列 perm ,其中 perm[i] == i(下标 从 0 开始 计数)。一步操作中,你将创建一个新数组 arr ,对于每个 i :如果 i % 2 == 0 ,那么 arr[i] = perm[i / 2]如果 i % 2 == 1 ,那么 arr[i] = perm[n / 2 + (i - 1) / 2]然后将 arr 赋值给 perm 。返回最小的 perm 回到排列初始值的操作步数
2023-01-27 10:57:01
763
原创 LeetCode 1658. 将 x 减到 0 的最小操作数(C++)
给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。
2023-01-26 22:09:41
239
原创 LeetCode 1802. 有界数组中指定下标处的最大值(C++)
给你三个正整数 n、index 和 maxSum 。你需要构造一个同时满足下述所有条件的数组 nums(下标 从 0 开始 计数):nums.length == nnums[i] 是 正整数 ,其中 0
2023-01-21 19:52:24
576
原创 LeetCode 1801. 积压订单中的订单总数(C++)
给你一个二维整数数组 orders ,其中每个 orders[i] = [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。0 表示这是一批采购订单 buy;1 表示这是一批销售订单 sell;输入所有订单后,返回积压订单中的 订单总数
2023-01-20 22:00:05
1189
原创 LeetCode 454. 四数相加 II(C++)
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0
2023-01-19 12:36:43
969
原创 LeetCode 395. 至少有 K 个重复字符的最长子串(C++)*
给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
2023-01-19 12:23:32
114
原创 LeetCode 380. O(1) 时间插入、删除和获取随机元素(C++)
实现RandomizedSet 类:bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。每个元素应该有 相同的概率 被返回。你必须实现类的所有函数,并满足每个函数的 平均 时间复杂度为 O(1) 。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。int getRandom() 随机返回现有集合中的一项
2023-01-18 18:35:17
388
原创 LeetCode 378. 有序矩阵中第 K 小的元素(C++)
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。你必须找到一个内存复杂度优于 O(n2) 的解决方案。
2023-01-18 18:27:28
368
原创 LeetCode 371. 两整数之和(C++)*
给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。对于位运算我们要考虑进位,所以我们将进位单独拆分计算;1.异或运算:相异为1,相同为0,而且没有进位,所以用异或来表示相加但是没有进位的运算。2.与运算:同为1时为1,将结果左移一位就相当于得到进位结果。不断循环将与运算和异或运算结果进行相同的计算得到的新的两个式子,直到进位为0;
2023-01-17 16:29:36
136
原创 LeetCode 341. 扁平化嵌套列表迭代器(C++)
给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。NestedIterator(List nestedList) 用嵌套列表 nestedList 初始化迭代器。int next() 返回嵌套列表的下一个整数。boolean hasNext() 如果仍然存在待迭代的整数,返回 true ;否则,返回 false 。
2023-01-16 21:18:32
311
原创 LeetCode 334. 递增的三元子序列(C++)
给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
2023-01-16 21:11:27
432
原创 LeetCode 329. 矩阵中的最长递增路径(C++)*
给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。
2023-01-15 17:46:58
330
原创 LeetCode 328. 奇偶链表(C++)
给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。
2023-01-15 11:33:36
104
原创 LeetCode 324. 摆动排序 II(C++)
给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。
2023-01-14 20:35:54
75
原创 LeetCode 295. 数据流的中位数(C++)*
中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。MedianFinder() 初始化 MedianFinder 对象。void addNum(int num) 将数据流中的整数 num 添加到数据结构中。double findMedian() 返回到目前为止所有元素的中位数。与实际答案相差 10-5 以内的答案将被接受。
2023-01-13 19:31:42
425
原创 LeetCode 230. 二叉搜索树中第K小的元素(C++)
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
2023-01-13 14:45:28
89
原创 LeetCode 218. 天际线问题(C++)*
城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。天际线 应该表示为由 “关键点” 组成的列表,格式 [[x1,y1],[x2,y2],...] ,并按 x 坐标 进行 排序 。关键点是水平线段的左端点。列表中最后一个点是最右侧建筑物的终点,y 坐标始终为 0 ,仅用于标记天际线的终点。此外,任何两个相邻建筑物之间的地面都应被视为天际线轮廓的一部分。
2023-01-12 22:11:36
380
原创 LeetCode 227. 基本计算器 II(C++)*
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。
2023-01-12 12:36:45
368
原创 LeetCode 212. 单词搜索 II(C++)*
给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。使用了回溯法和深度遍历来完成基本的判断实现,通过使用字典树来提高判断效率。
2023-01-11 14:44:13
370
原创 LeetCode 210. 课程表 II(C++)*
现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1] 。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回 一个空数组 。
2023-01-11 13:35:08
361
原创 LeetCode 204. 计数质数(C++)
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。本题首先使用了逐个遍历的方法并优化了判断方法;之后采用了埃氏筛来筛选数字,得到质数。
2023-01-10 21:25:52
291
原创 LeetCode 179. 最大数(C++)
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
2023-01-09 16:02:35
184
原创 LeetCode 162. 寻找峰值(C++)
峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。
2023-01-08 14:56:26
397
原创 LeetCode 150. 逆波兰表达式求值(C++)
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。
2023-01-08 14:39:13
513
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人