![](https://img-blog.csdnimg.cn/2dd5164a2bb44aeb92ba6c04f07e1441.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
不易|力扣算法每日一题
分享力扣算法的每日一题,激励自己和大家坚持刷算法,坚持思考,通过写作检验自己对算法题的理解。
星不易
这个作者很懒,什么都没留下…
展开
-
算法 | 每日一题 | 可获得的最大点数 | 滑动窗口
这两天正好在做一些滑动窗口的题目,这道题使用滑动窗口解题会非常简单,因为取走的数是两边的数,所以把中间的数看作一个长度为 n - k 的滑动窗口即可。几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。原创 2023-12-03 22:20:41 · 155 阅读 · 0 评论 -
算法|每日一题|最长平衡子字符串|计数
如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。给你一个仅由 0 和 1 组成的二进制字符串 s。返回 s 中最长的平衡子字符串长度。子字符串是字符串中的一个连续字符序列。如有错误或者不足之处,敬请指正!原创 2023-11-08 11:11:39 · 317 阅读 · 0 评论 -
算法|每日一题|H 指数|二分
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。如果 h 有多种可能的值,h 指数 是其中最大的那个。给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。如有错误或者不足之处,敬请指正!原创 2023-10-29 15:58:16 · 382 阅读 · 0 评论 -
算法|每日一题|从数量最多的堆取走礼物|最大堆
给你一个整数数组 gifts ,表示各堆礼物的数量。选中的那一堆留下平方根数量的礼物(向下取整),取走其他的礼物。如果不止一堆都符合礼物数量最多,从中选择任一堆即可。如有错误或者不足之处,敬请指正!返回在 k 秒后剩下的礼物数量。选择礼物数量最多的那一堆。原创 2023-10-28 16:00:15 · 165 阅读 · 0 评论 -
算法|每日一题|切割后面积最大的蛋糕|贪心
请你按数组 horizontalCuts 和 verticalCuts 中提供的水平和竖直位置切割后,请你找出 面积最大 的那份蛋糕,并返回其 面积。由于答案可能是一个很大的数字,因此需要将结果 对 109 + 7 取余 后返回。horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离。verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口的距离。如有错误或者不足之处,敬请指正!原创 2023-10-27 15:49:33 · 132 阅读 · 0 评论 -
算法|每日一题|统计能整除数字的位数
如果满足 nums % val == 0 ,则认为整数 val 可以整除 nums。给你一个整数 num ,返回 num 中能整除 num 的数位的数目。如有错误或者不足之处,敬请指正!原创 2023-10-26 11:35:13 · 98 阅读 · 0 评论 -
算法|每日一题|求一个整数的惩罚数|回溯
i * i 的十进制表示的字符串可以分割成若干连续子字符串,且这些子字符串对应的整数值之和等于 i。给你一个正整数 n ,请你返回 n 的 惩罚数。如有错误或者不足之处,敬请指正!原创 2023-10-25 08:35:37 · 138 阅读 · 0 评论 -
算法|每日一题|掷骰子等于目标和的方法数|动态规划
给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种方式中)滚动骰子的数量,使正面朝上的数字之和等于 target。这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k。答案可能很大,你需要对 109 + 7 取模。如有错误或者不足之处,敬请指正!原创 2023-10-24 23:35:16 · 287 阅读 · 0 评论 -
算法|每日一题|老人的数目|字符串
给你一个下标从 0 开始的字符串 details。请你返回乘客中年龄 严格大于 60 岁 的人数。如有错误或者不足之处,敬请指正!接下来的一个字符是乘客的性别。前十个字符是乘客的手机号码。接下来两个字符是乘客的年龄。最后两个字符是乘客的座位号。原创 2023-10-23 10:07:22 · 155 阅读 · 0 评论 -
算法|每日一题|做菜顺序|贪心
一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i]*satisfaction[i]。一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。返回厨师在准备了一定数量的菜肴后可以获得的最大 like-time 系数 总和。你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。原创 2023-10-22 23:01:47 · 1326 阅读 · 0 评论 -
算法|每日一题|统计无向图中无法互相到达点对数|并查集
给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1。同时给你一个二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。请你返回 无法互相到达 的不同 点对数目。如有错误或者不足之处,敬请指正!原创 2023-10-21 16:19:42 · 207 阅读 · 0 评论 -
算法|每日一题|根据规则将箱子分类|注意转换数据类型
给你四个整数 length ,width ,height 和 mass ,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子 类别 的字符串。如果箱子既不是 “Bulky” ,也不是 “Heavy” ,那么返回类别为 “Neither”。如果箱子是 “Bulky” 但不是 “Heavy” ,那么返回类别为 “Bulky”。如果箱子是 “Heavy” 但不是 “Bulky” ,那么返回类别为 “Heavy”。如果箱子同时是 “Bulky” 和 “Heavy” ,那么返回类别为 “Both”。原创 2023-10-20 09:42:56 · 134 阅读 · 0 评论 -
算法|每日一题|同积元组|哈希统计
给你一个由 不同 正整数组成的数组 nums ,请你返回满足 a * b = c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素,且 a!如有错误或者不足之处,敬请指正!原创 2023-10-19 19:04:38 · 249 阅读 · 0 评论 -
算法|每日一题|执行K次操作后的最大分数|贪心+优先队列
给你一个下标从 0 开始的整数数组 nums 和一个整数 k。你的 起始分数 为 0。1.选出一个满足 0原创 2023-10-18 16:40:30 · 114 阅读 · 0 评论 -
算法|每日一题|倍数求和|容斥原理
如有错误或者不足之处,敬请指正!原创 2023-10-17 12:46:52 · 141 阅读 · 0 评论 -
算法|每日一题|只出现一次的数字Ⅲ|位运算
如有错误或者不足之处,敬请指正!原创 2023-10-16 18:08:25 · 387 阅读 · 0 评论 -
算法|每日一题|只出现一次的数字Ⅱ|位运算
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。请你找出并返回那个只出现了一次的元素。nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。如有错误或者不足之处,敬请指正!原创 2023-10-15 16:32:32 · 250 阅读 · 0 评论 -
算法|每日一题|只出现一次的数字|位运算
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。除了某个元素只出现一次以外,其余每个元素均出现两次。如有错误或者不足之处,敬请指正!原创 2023-10-14 22:02:12 · 396 阅读 · 0 评论 -
算法|每日一题|避免洪水泛滥|贪心
● rains[i] == 0 表示第 i 天没有湖泊会下雨,你可以选择 一个 湖泊并 抽干 这个湖泊的水。请注意,如果你选择抽干一个装满水的湖泊,它会变成一个空的湖泊。但第三天后,湖泊 1 和 2 都会再次下雨,所以不管我们第三天抽干哪个湖泊的水,另一个湖泊都会发生洪水。● 如果 rains[i] == 0 ,ans[i] 是你第 i 天选择抽干的湖泊。同时, [-1,-1,1,2,-1,-1] 也是另一个可行的没有洪水的方案。第四天后,我们抽干湖泊 1。第四天后,装满水的湖泊包括 [1,2,3,4]原创 2023-10-13 18:04:40 · 287 阅读 · 0 评论 -
算法|每日一题|找出数组的串联值|数组
● 如果 nums 中存在不止一个数字,分别选中 nums 中的第一个元素和最后一个元素,将二者串联得到的值加到 nums 的 串联值 上,然后从 nums 中删除第一个和最后一个元素。nums 只有一个元素,所以我们选中 13 并将其加到串联值上,所以串联值等于 673。● 如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。二者的串联是 522 ,将其加到串联值上,所以串联值等于 596。二者的串联是 74 ,将其加到串联值上,所以串联值等于 74。原创 2023-10-12 20:24:24 · 150 阅读 · 0 评论 -
算法|每日一题|奖励最顶尖的K名学生|哈希表
给你 n 个学生的评语,用一个下标从 0 开始的字符串数组 report 和一个下标从 0 开始的整数数组 student_id 表示,其中 student_id[i] 表示这名学生的 ID ,这名学生的评语是 report[i]。每个正面的单词会给学生的分数 加 3 分,每个负面的词会给学生的分数 减 1 分。ID 为 1 的学生有 1 个正面词汇和 1 个负面词汇,所以得分为 3-1=2 分。两名学生都有 1 个正面词汇,都得到 3 分,学生 1 的 ID 更小所以排名更前。原创 2023-10-11 19:47:36 · 75 阅读 · 0 评论 -
算法|每日一题|移动机器人|脑筋急转弯
○ 例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 2 并往左移动,下一秒,它们都将占据位置 1,并改变方向。○ 例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 1 并往左移动,下一秒,第一个机器人位于位置 0 并往左行驶,而另一个机器人位于位置 1 并往右移动。1 秒后,机器人的位置为 [-1,-1,1]。现在下标为 0 的机器人开始往左移动,下标为 1 的机器人开始往右移动。现在下标为 1 的机器人开始往左移动,下标为 2 的机器人开始往右移动。原创 2023-10-10 22:14:52 · 109 阅读 · 0 评论 -
算法|每日一题|最小和分割
我们可以将 4325 分割成 num1 = 24 和 num2 = 35 ,和为 59 ,59 是最小和。○ 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。我们可以将 687 分割成 num1 = 68 和 num2 = 7 ,和为最优值 75。● num1 和 num2 直接连起来,得到 num 各数位的一个排列。● num1 和 num2 中数位顺序可以与 num 中数位顺序不同。请你返回 num1 和 num2 可以得到的和的 最小 值。原创 2023-10-09 19:20:26 · 71 阅读 · 0 评论 -
算法|每日一题|股票价格波动|哈希表+有序集合
通过最新时间戳在哈希表中找到最新的价格,通过有序集合中价格出现的次数来维护价格的存储,若次数为 0 则该价格不存在,如果不为 0 就可以按照价格高低在有序集合中存储并排序,便于返回股票的最高和最低价格。通过哈希表存储时间戳和价格的映射,通过有序集合存储价格和出现次数的映射,用 maxTimestamp 记录最新的时间戳。// 时间戳为 [1,2] ,对应的股票价格为 [10,5]。// 时间戳为 [1,2,4] ,对应价格为 [3,5,2]。// 时间戳为 [1,2] ,对应股票价格为 [3,5]。原创 2023-10-08 12:34:29 · 157 阅读 · 0 评论 -
算法|每日一题|股票价格跨度|单调栈
/ 返回 4 ,因为截至今天的最后 4 个股价 (包括今天的股价 75) 都小于或等于今天的股价。使用一个单调栈,栈底为高报价,栈顶为低报价,通过 HashMap 记录跨度,并且每次压入新的报价时,如果发生了弹出,都要使用前边弹出的报价的跨度。● 例如,如果未来 7 天股票的价格是 [100,80,60,70,60,75,85],那么股票跨度将是 [1,1,1,2,1,4,6]。● int next(int price) 给出今天的股价 price ,返回该股票当日价格的 跨度。原创 2023-10-07 13:51:44 · 166 阅读 · 0 评论 -
算法|每日一题|买卖股票的最佳时机含手续费|动态规划
给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格;如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。输入:prices = [1, 3, 2, 8, 4, 9], fee = 2。总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8。输入:prices = [1,3,7,5,10,3], fee = 3。在此处卖出 prices[3] = 8。原创 2023-10-06 19:46:08 · 136 阅读 · 1 评论 -
算法|每日一题|买卖股票的最佳时机 III |动态规划
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。输入:prices = [3,3,5,0,0,3,1,4]输入:prices = [1]原创 2023-10-03 11:05:51 · 122 阅读 · 1 评论 -
算法|每日一题|买卖股票的最佳时机II
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]原创 2023-10-02 22:58:45 · 126 阅读 · 1 评论 -
算法|每日一题|买卖股票的最佳时机
输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。如果你不能获取任何利润,返回 0。原创 2023-10-01 23:18:44 · 125 阅读 · 0 评论 -
算法|每日一题|种花问题
给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。输入:flowerbed = [1,0,0,0,1], n = 2 输出:false。输入:flowerbed = [1,0,0,0,1], n = 1 输出:true。原创 2023-09-29 20:24:53 · 217 阅读 · 0 评论 -
算法|每日一题|餐厅过滤器
其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你应该只包括 veganFriendlyi 为 true 的餐馆,为 false 则意味着可以包括任何餐馆。此外,我们还有最大价格 maxPrice 和最大距离 maxDistance 两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。简单起见, veganFriendlyi 和 veganFriendly 为 true 时取值为 1,为 false 时,取值为 0。原创 2023-09-27 18:44:51 · 67 阅读 · 1 评论 -
算法|将钱分给最多的儿童
如果直接返回 (money - children) / 7,就会将 children-1 个人分到8美元且一个人分到四美元的情况包含在内,导致返回 children-1(此时应当返回 children-2)。= 8 * children - 4 条件的话,就最多只能有 children-2 个人能够分到8美元,因此使用 children-2 对 (money - children) / 7 的上限加以限制。请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得 恰好 8 美元。所有的钱都必须被分配。原创 2023-09-24 20:09:42 · 157 阅读 · 1 评论