leetcode刷题/每日随机一题
文章平均质量分 59
公仔面i
这个作者很懒,什么都没留下…
展开
-
“手把手“教你完成买卖股票含冻结期
309. 最佳买卖股票时机含冷冻期1.题意给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。2.示例示例 1:输入: prices = [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期,原创 2022-03-12 09:21:45 · 261 阅读 · 0 评论 -
看完你就会的题 剑指 Offer 16. 数值的整数次方
剑指 Offer 16. 数值的整数次方题意:实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25解题思路:前提: 因为x 等于 2的31原创 2021-09-12 10:56:02 · 100 阅读 · 0 评论 -
面试题 17.14. 最小K个数(几乎双百)
面试题 17.14. 最小K个数题意:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))解题思路这道题只需要排序,让小的在前,大的在后只保留k为数,剩下的删除代码class Solution {public:原创 2021-09-03 23:09:40 · 91 阅读 · 0 评论 -
leetcode刷题/每日随机一题 551. 学生出勤记录 I
551. 学生出勤记录 I题意:给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:'A':Absent,缺勤'L':Late,迟到'P':Present,到场如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:按 总出勤 计,学生缺勤(‘A’)严格 少于两天。学生 不会 存在 连续 3 天或 3 天以上的迟到(‘L’)记录。如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。示原创 2021-08-17 08:29:03 · 273 阅读 · 0 评论 -
leetcode刷题/每日随机一题 413. 等差数列划分
413. 等差数列划分题意:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。示原创 2021-08-10 09:19:24 · 168 阅读 · 0 评论 -
leetcode刷题/每日一题 313. 超级丑数
313. 超级丑数题意:超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。示例 1:输入:n = 12, primes = [2,7,13,19]输出:32 解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,2原创 2021-08-09 19:54:07 · 159 阅读 · 0 评论 -
leetcode刷题/每日一题 1137. 第 N 个泰波那契数
1137. 第 N 个泰波那契数题意:泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537解题思路:看到斐波那契我第一想法是递归,因为这个它本身就原创 2021-08-08 10:00:47 · 224 阅读 · 0 评论 -
♥每日理解一道题♥/ 457. 环形数组是否存在循环
457. 环形数组是否存在循环题意:存在一个不含 0 的 环形 数组 nums ,每个 nums[i] 都表示位于下标 i 的角色应该向前或向后移动的下标个数:如果 nums[i] 是正数,向前 移动 nums[i] 步如果 nums[i] 是负数,向后 移动 nums[i] 步因为数组是 环形 的,所以可以假设从最后一个元素向前移动一步会到达第一个元素,而第一个元素向后移动一步会到达最后一个元素。数组中的 循环 由长度为 k 的下标序列 seq :遵循上述移动规则将导致重复下标序列 seq原创 2021-08-07 18:52:20 · 98 阅读 · 0 评论 -
leetcode刷题/每日随机一题 326. 3的幂
326. 3的幂题意给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x示例 1:输入:n = 27输出:true示例 2:输入:n = 0输出:false示例 3:输入:n = 9输出:true解题思路:这个题有多个解法,甚至于我看到有些人直接把全部结果都列出来的,因为个数不多.我基本都是套用递归来完成.这个可以作为模板来用模板判断是否原创 2021-08-06 12:25:42 · 131 阅读 · 0 评论 -
leetcode刷题/每日一题 204. 计数质数
204. 计数质数题意统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0解题思路这道题是经典题,如果用暴力肯定会超时.用埃氏筛法即可问答怎么判断一个数是质数?该数的因数只有1和它本身就是质数那么怎么判断一个数是合数?有其他的因数,所以我们可以根据质数来把合数全部推出来.(原创 2021-08-06 12:18:49 · 171 阅读 · 0 评论 -
leetcode刷题/每日一题 155. 最小栈
155. 最小栈题意:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,nu原创 2021-08-06 12:07:21 · 116 阅读 · 0 评论 -
leetcode刷题/每日一题 88. 合并两个有序数组
88. 合并两个有序数组题意:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:原创 2021-08-06 11:46:36 · 163 阅读 · 0 评论 -
leetcode刷题/每日一题 108. 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树题意:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]解释:[1,原创 2021-08-06 11:39:35 · 169 阅读 · 0 评论 -
leetcode刷题/每日一题 802. 找到最终的安全状态
802. 找到最终的安全状态题意:在有向图中,以某个节点为起始节点,从该点出发,每一步沿着图中的一条有向边行走。如果到达的节点是终点(即它没有连出的有向边),则停止。对于一个起始节点,如果从该节点出发,无论每一步选择沿哪条有向边行走,最后必然在有限步内到达终点,则将该起始节点称作是 安全 的。返回一个由图中所有安全的起始节点组成的数组作为答案。答案数组中的元素应当按 升序 排列。该有向图有 n 个节点,按 0 到 n - 1 编号,其中 n 是 graph 的节点数。图以下述形式给出:graph原创 2021-08-05 08:57:59 · 183 阅读 · 0 评论 -
leetcode刷题/每日一题 611. 有效三角形的个数
611. 有效三角形的个数题意:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3解题思路:我的想法是这样的,用双指针(定二动一),左边指向第一个节点,右边指向最后一个节点,然后一个滑标 从右边出发,知道左边加上滑标的值小于最后的大的.加上下标的差,然后左边+1,重复上面循环直到左边和右边相差1.问原创 2021-08-04 09:31:37 · 148 阅读 · 0 评论 -
leetcode刷题/每日一题 77. 组合
77. 组合题意:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]解题思路:这道题类型与求长度为K的路劲.所以利用利用递归,再加上回溯问答递归结束条件如果路径长度等于K,就可以原创 2021-08-03 13:04:05 · 89 阅读 · 0 评论 -
leetcode刷题/每日一题 46. 全排列
46. 全排列题意:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]解题思路:利用递归加回溯,因为删除数组时间复杂度太大,所以需要加上标记数组来完成.原创 2021-08-03 13:03:22 · 254 阅读 · 0 评论 -
leetcode刷题/每日随机一题 994. 腐烂的橘子
994. 腐烂的橘子题意:在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第 2 行原创 2021-08-01 11:37:36 · 142 阅读 · 0 评论 -
leetcode刷题/每日一题 1337. 矩阵中战斗力最弱的 K 行
1337. 矩阵中战斗力最弱的 K 行题意:给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。示例 1:输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0,原创 2021-08-01 09:05:23 · 195 阅读 · 0 评论 -
leetcode刷题/每日一题 987. 二叉树的垂序遍历
987. 二叉树的垂序遍历给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。对位于 (row, col) 的每个结点而言,其左右子结点分别位于 (row + 1, col - 1) 和 (row + 1, col + 1) 。树的根结点位于 (0, 0) 。二叉树的 垂序遍历 从最左边的列开始直到最右边的列结束,按列索引每一列上的所有结点,形成一个按出现位置从上到下排序的有序列表。如果同行同列上有多个结点,则按结点的值从小到大进行排序。返回二叉树的 垂序遍历 序列。示例原创 2021-07-31 10:17:47 · 85 阅读 · 0 评论 -
leetcode刷题/每日一题 1104. 二叉树寻路
1104. 二叉树寻路题意:在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例 1:输入:label = 14输出:[1,3,4,14]示例 2:输入:la原创 2021-07-29 09:08:27 · 168 阅读 · 0 评论 -
leetcode刷题/每日一题 116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针题意:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。原创 2021-07-30 11:27:23 · 134 阅读 · 0 评论 -
leetcode刷题/每日一题 617. 合并二叉树 - 力扣
617. 合并二叉树 - 力扣给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2021-07-30 08:44:38 · 101 阅读 · 0 评论 -
leetcode刷题/每日一题 171. Excel表列序号 - 力扣
171. Excel表列序号 - 力扣题意:给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:输入: "ZY"输出: 701解题思路:这种算数我习惯从尾部开始问答数字是怎么算出来的?26个字母对于1~26,原创 2021-07-30 08:03:52 · 134 阅读 · 0 评论 -
leetcode刷题/每日一题 695. 岛屿的最大面积
695. 岛屿的最大面积题意:给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,原创 2021-07-29 23:05:49 · 163 阅读 · 0 评论 -
leetcode刷题/每日一题 671. 二叉树中第二小的节点
671. 二叉树中第二小的节点题意:给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入:root = [2,2,5,null,null,5,7]输出:5解释:原创 2021-07-27 08:07:07 · 242 阅读 · 2 评论 -
leetcode刷题/每日随机一题 1743. 从相邻元素对还原数组
1743. 从相邻元素对还原数组题意:存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素。给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 adjacentPairs[i] = [ui, vi] 表示元素 ui 和 vi 在 nums 中相邻。题目数据保证所有由元素 nums[i] 和 nums[i+1] 组成的相邻元素对都存在于 adjacentPairs 中,存在形式可能是 [nums[i]原创 2021-07-25 09:23:55 · 132 阅读 · 0 评论 -
leetcode刷题/每日随机一题 1736. 替换隐藏数字得到的最晚时间
1736. 替换隐藏数字得到的最晚时间题意:给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。示例 1:输入:time = "2?:?0"输出:"23:50"解释:以数字 '2' 开头的最晚一小时是 23 ,以 '0' 结尾的最晚一分钟是 50 。示例 2:输入:time = "0原创 2021-07-24 07:26:33 · 121 阅读 · 0 评论 -
leetcode刷题/每日随机一题 1893. 检查是否区域内所有整数都被覆盖
1893. 检查是否区域内所有整数都被覆盖题意:给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回 true ,否则返回 false 。已知区间 ranges[i] = [starti, endi] ,如果整数 x 满足 starti <= x &l原创 2021-07-23 14:11:37 · 131 阅读 · 0 评论 -
leetcode刷题/每日一题 138. 复制带随机指针的链表
138. 复制带随机指针的链表 - 力扣题意:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中原创 2021-07-22 08:29:35 · 127 阅读 · 1 评论 -
leetcode刷题/每日一题 1846. 减小和重新排列数组后的最大元素
1846. 减小和重新排列数组后的最大元素题意:给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。你可以执行以下 2 种操作任意次:减小 arr 中任原创 2021-07-21 09:17:14 · 125 阅读 · 0 评论 -
leetcode刷题/每日一题 剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点题意:输入两个链表,找出它们的第一个公共节点。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B原创 2021-07-21 08:47:32 · 68 阅读 · 0 评论 -
leetcode每日一题 1877. 数组中最大数对和的最小值
1877. 数组中最大数对和的最小值题意:一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。请你在最优数对划原创 2021-07-20 13:12:16 · 173 阅读 · 0 评论 -
leetcode刷题/每日一题 1838. 最高频元素的频数
1838. 最高频元素的频数题意:元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例原创 2021-07-19 14:29:02 · 229 阅读 · 0 评论 -
leetcode刷题/每日随机一题 面试题 10.02. 变位词组
这道题我刷过,就不再重新写一个了,下面是我之前刷过的链接:49.字母异位词分组原创 2021-07-18 11:29:44 · 118 阅读 · 0 评论 -
leetcode刷题/每日随机一题 剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和题意:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路:利用动态规划思想定义count用来存储数组的值,寻找最大值;还有一个res来存储最大值;如果当前下标小于0,说明如果加进去会让res变小,那么需要先记录当前的re原创 2021-07-18 11:07:47 · 110 阅读 · 0 评论