
leetcode每日一题
文章平均质量分 63
leetcode每日一题
admite
这个作者很懒,什么都没留下…
展开
-
2611. 老鼠和奶酪
有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。下标为 i 处的奶酪被吃掉的得分为:如果第一只老鼠吃掉,则得分为 reward1[i]。如果第二只老鼠吃掉,则得分为 reward2[i]。给你一个正整数数组 reward1 ,一个正整数数组 reward2 ,和一个非负整数 k。请你返回第一只老鼠恰好吃掉 k 块奶酪的情况下,最大 得分为多少。示例 1:输入:reward1 = [1,1,3,4], reward2 = [4,4,1,1], k = 2输出:15。原创 2023-06-07 19:52:03 · 785 阅读 · 0 评论 -
受标签影响的最大值
我们有一个 n 项的集合。给出两个整数数组 values 和 labels ,第 i 个元素的值和标签分别是 values[i] 和 labels[i]。还会给出两个整数 numWanted 和 useLimit。从 n 个元素中选择一个子集 s :子集 s 的大小 小于或等于 numWanted。s 中 最多 有相同标签的 useLimit 项。一个子集的 分数 是该子集的值之和。返回子集 s 的最大 分数。原创 2023-05-23 12:30:09 · 497 阅读 · 0 评论 -
活字印刷。
你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。注意:本题中,每个活字字模只能使用一次。示例 1:输入:“AAB”输出:8解释:可能的序列为 “A”, “B”, “AA”, “AB”, “BA”, “AAB”, “ABA”, “BAA”。示例 2:输入:“AAABBC”输出:188示例 3:输入:“V”输出:1提示:tiles 由大写英文字母组成来源:力扣(LeetCode)原创 2023-05-19 21:15:05 · 525 阅读 · 0 评论 -
负二进制数相加
给出基数为 -2 的两个数 arr1 和 arr2,返回两数相加的结果。数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr = [1,1,0,1] 表示数字 (-2)^3 + (-2)^2 + (-2)^0 = -3。数组形式 中的数字 arr 也同样不含前导零:即 arr == [0] 或 arr[0] == 1。返回相同表示形式的 arr1 和 arr2 相加的结果。两数的表示形式为:不含前导零、由若干 0 和 1 组成的数组。原创 2023-05-18 13:26:23 · 502 阅读 · 0 评论 -
数青蛙。。
给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 “croak” )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak”。请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。要想发出蛙鸣 “croak”,青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。原创 2023-05-06 12:47:08 · 270 阅读 · 0 评论 -
检查替换后的词是否有效
给你一个字符串 s ,请你判断它是否 有效。字符串 s 有效 需要满足:假设开始有一个空字符串 t = “” ,你可以执行 任意次 下述操作将 t 转换为 s :将字符串 “abc” 插入到 t 中的任意位置。形式上,t 变为 tleft + “abc” + tright,其中 t == tleft + tright。注意,tleft 和 tright 可能为 空。如果字符串 s 有效,则返回 true;否则,返回 false。示例 1:输入:s = “aabcbc”输出:true。原创 2023-05-03 11:58:42 · 856 阅读 · 0 评论 -
通知所有员工所需的时间
公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。公司总负责人想要向公司所有员工通告一条紧急消息。他将会首先通知他的直属下属们,然后由这些下属通知他们的下属,直到所有的员工都得知这条紧急消息。原创 2023-05-01 14:03:28 · 1607 阅读 · 0 评论 -
最长字符串链
给出一个单词数组 words ,其中每个单词都由小写英文字母组成。如果我们可以 不改变其他字符的顺序 ,在 wordA 的任何地方添加 恰好一个 字母使其变成 wordB ,那么我们认为 wordA 是 wordB 的 前身。例如,“abc” 是 “abac” 的 前身 ,而 “cba” 不是 “bcad” 的 前身词链是单词 [word_1, word_2, …, word_k] 组成的序列,k >= 1,其中 word1 是 word2 的前身,word2 是 word3 的前身,依此类推。原创 2023-04-27 14:48:09 · 408 阅读 · 0 评论 -
使数组严格递增
给你两个整数数组 arr1 和 arr2,返回使 arr1 严格递增所需要的最小「操作」数(可能为 0)。每一步「操作」中,你可以分别从 arr1 和 arr2 中各选出一个索引,分别为 i 和 j,0 <= i < arr1.length 和 0 <= j < arr2.length,然后进行赋值运算 arr1[i] = arr2[j]。如果无法让 arr1 严格递增,请返回 -1。示例 1:输入:arr1 = [1,5,3,6,7], arr2 = [1,3,2,4]输出:1。原创 2023-04-20 19:23:11 · 423 阅读 · 0 评论 -
分隔数组以得到最大和
给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。返回将数组分隔变换后能够得到的元素最大和。本题所用到的测试用例会确保答案是一个 32 位整数。示例 1:输入:arr = [1,15,7,9,2,5,10], k = 3输出:84解释:数组变为 [15,15,15,9,10,10,10]示例 2:输入:arr = [1,4,1,5,7,3,6,1,9,9,3], k = 4输出:83。原创 2023-04-19 15:46:32 · 409 阅读 · 0 评论 -
不邻接植花
有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] = [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。另外,所有花园 最多 有 3 条路径可以进入或离开.你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回 任一 可行的方案作为答案 answer,其中 answer[i] 为在第 (i+1) 个花园中种植的花的种类。花的种类用 1、2、3、4 表示。保证存在答案。原创 2023-04-15 16:46:51 · 612 阅读 · 0 评论 -
驼峰式匹配
如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false。原创 2023-04-14 15:11:05 · 401 阅读 · 0 评论 -
段式回文。
你会得到一个字符串 text。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk) ,要求满足:subtexti 是 非空 字符串所有子字符串的连接等于 text ( 即subtext1 + subtext2 + … + subtextk == text )对于所有 i 的有效值( 即 1 <= i <= k ) ,subtexti == subtextk - i + 1 均成立返回k可能最大值。原创 2023-04-12 14:58:27 · 441 阅读 · 0 评论 -
困于环中的机器人
在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。机器人可以接受下列三条指令之一:“G”:直走 1 个单位“L”:左转 90 度“R”:右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例 1:输入:instructions = “GGLLGG”原创 2023-04-11 16:56:29 · 586 阅读 · 0 评论 -
移动石子直到连续 II
每个回合,你可以将一颗端点石子拿起并移动到一个未占用的位置,使得该石子不再是一颗端点石子。值得注意的是,如果石子像 stones = [1,2,5] 这样,你将 无法 移动位于位置 5 的端点石子,因为无论将它移动到任何位置(例如 0 或 3),该石子都仍然会是端点石子。当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。要使游戏结束,你可以执行的最小和最大移动次数分别是多少?以长度为 2 的数组形式返回答案:answer = [minimum_moves, maximum_moves]。原创 2023-04-07 18:28:23 · 274 阅读 · 0 评论 -
交换一次的先前排列
给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。如果无法这么操作,就请返回原数组。示例 1:输入:arr = [3,2,1]输出:[3,1,2]解释:交换 2 和 1示例 2:输入:arr = [1,1,5]输出:[1,1,5]解释:已经是最小排列示例 3:输入:arr = [1,9,4,6,7]输出:[1,7,4,6,9]原创 2023-04-03 16:02:01 · 319 阅读 · 0 评论 -
多边形三角剖分的最低得分
你有一个凸的 n 边形,其每个顶点都有一个整数值。给定一个整数数组 values ,其中 values[i] 是第 i 个顶点的值(即 顺时针顺序 )。假设将多边形 剖分 为 n - 2 个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 n - 2 个三角形的值之和。返回 多边形进行三角剖分后可以得到的最低分。示例 1:输入:values = [1,2,3]输出:6解释:多边形已经三角化,唯一三角形的分数为 6。原创 2023-04-02 18:15:03 · 290 阅读 · 0 评论 -
隐藏个人信息
给你一条个人信息字符串 s ,可能表示一个 邮箱地址 ,也可能表示一串 电话号码。返回按如下规则 隐藏 个人信息后的结果:电子邮件地址:一个电子邮件地址由以下部分组成:一个 名字 ,由大小写英文字母组成,后面跟着一个 ‘@’ 字符,后面跟着一个 域名 ,由大小写英文字母和一个位于中间的 ‘.’ 字符组成。‘.’ 不会是域名的第一个或者最后一个字符。要想隐藏电子邮件地址中的个人信息:名字 和 域名 部分的大写英文字母应当转换成小写英文字母。原创 2023-04-01 12:13:21 · 393 阅读 · 0 评论 -
最短公共超序列
给出两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。原创 2023-03-28 16:51:09 · 210 阅读 · 0 评论 -
Leetcode字符流
设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。例如,words = [“abc”, “xyz”] 且字符流中逐个依次加入 4 个字符 ‘a’、‘x’、‘y’ 和 ‘z’ ,你所设计的算法应当可以检测到 “axyz” 的后缀 “xyz” 与 words 中的字符串 “xyz” 匹配。按下述要求实现 StreamChecker 类:StreamChecker(String[] words) :构造函数,用字符串数组 words 初始化数据结构。原创 2023-03-24 17:28:05 · 299 阅读 · 0 评论 -
等差子数组
如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i+1] - s[i] == s[1] - s[0] 都成立。例如,下面这些都是 等差数列 :7, 7, 7, 7下面的数列 不是等差数列 :给你一个由 n 个整数组成的数组 nums,和两个由 m 个整数组成的数组 l 和 r,后两个数组表示 m 组范围查询,其中第 i 个查询对应范围 [l[i], r[i]]。原创 2023-03-23 00:26:02 · 223 阅读 · 0 评论 -
无矛盾的最佳球队
假设你是球队的经理。对于即将到来的锦标赛,你想组合一支总体得分最高的球队。球队的得分是球队中所有球员的分数 总和。然而,球队中的矛盾会限制球员的发挥,所以必须选出一支 没有矛盾 的球队。如果一名年龄较小球员的分数 严格大于 一名年龄较大的球员,则存在矛盾。同龄球员之间不会发生矛盾。给你两个列表 scores 和 ages,其中每组 scores[i] 和 ages[i] 表示第 i 名球员的分数和年龄。请你返回 所有可能的无矛盾球队中得分最高那支的分数。原创 2023-03-22 17:09:58 · 136 阅读 · 0 评论 -
连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:来源:力扣(LeetCode)链接:https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof著作权归领扣网络所有。原创 2023-03-20 17:02:30 · 138 阅读 · 0 评论 -
执行操作后字典序最小的字符串
给你一个字符串 s 以及两个整数 a 和 b。其中,字符串 s 的长度为偶数,且仅由数字 0 到 9 组成。你可以在 s 上按任意顺序多次执行下面两个操作之一:累加:将 a 加到 s 中所有下标为奇数的元素上(下标从 0 开始)。数字一旦超过 9 就会变成 0,如此循环往复。例如,s = “3456” 且 a = 5,则执行此操作后 s 变成 “3951”。轮转:将 s 向右轮转 b 位。例如,s = “3456” 且 b = 1,则执行此操作后 s 变成 “6345”。原创 2023-03-19 20:19:45 · 531 阅读 · 0 评论 -
分割两个字符串得到回文串
给你两个字符串 a 和 b ,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a = aprefix + asuffix ,同理,由 b 可以得到两个字符串 bprefix 和 bsuffix ,满足 b = bprefix + bsuffix。请你判断 aprefix + bsuffix 或者 bprefix + asuffix 能否构成回文串。原创 2023-03-18 13:23:43 · 135 阅读 · 0 评论 -
2389. 和有限的最长子序列
给你一个长度为 n 的整数数组 nums ,和一个长度为 m 的整数数组 queries。返回一个长度为 m 的数组 answer ,其中 answer[i] 是 nums 中 元素之和小于等于 queries[i] 的 子序列 的 最大 长度。子序列 是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。示例 1:输入:nums = [4,5,2,1], queries = [3,10,21]输出:[2,3,4]原创 2023-03-17 22:48:05 · 116 阅读 · 1 评论