![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日一题
为有牺牲多壮志
这个作者很懒,什么都没留下…
展开
-
双向链表+哈希表实现O(1)
146. LRU 缓存请你设计并实现一个满足LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字key 已经存在,则变更其数据值value ;如果不存在,则向缓存中插入该组key-val...原创 2022-03-16 22:40:43 · 1027 阅读 · 0 评论 -
每日一题补题记录14
3.112049. 统计最高分的节点数目给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -1 。一个子树的 大小 为这个子树内节点的数目。每个节点都有一个与之关联的 分数 。求出某个节点分数的方法是,将这个节点和与它相连的边全部 删除 ,剩余部分是若干个 非空 子树,这个节点的 分数原创 2022-03-15 20:49:31 · 890 阅读 · 0 评论 -
每日一题补题记录13
3.72055. 蜡烛之间的盘子给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0开始的字符串s,它只包含字符'*' 和'|',其中'*'表示一个 盘子,'|'表示一支蜡烛。同时给你一个下标从 0开始的二维整数数组queries,其中queries[i] = [lefti, righti]表示 子字符串s[lefti...righti](包含左右端点的字符)。对于每个查询,你需要找到 子字符串中在 两支蜡烛之间的盘子的 数目。如果一个盘子在 ...原创 2022-03-14 17:13:30 · 1476 阅读 · 0 评论 -
每日一题补题记录12
3.5521. 最长特殊序列 Ⅰ给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1 。「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "abc" 。 "aebdc" 的子序列还包括 "aebdc" 、 "aeb" 和 ""原创 2022-03-11 22:30:11 · 304 阅读 · 0 评论 -
每日一题补题记录11
3.2564. 寻找最近的回文数3.3258. 各位相加这个题目3.42104. 子数组范围和原创 2022-03-11 18:27:22 · 241 阅读 · 0 评论 -
每日一题补题记录10
2.27553. 最优除法给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10/2)"解释:1000/(100/10/2) = 1000/((100/10)/2) = 200但原创 2022-03-04 22:48:48 · 67 阅读 · 0 评论 -
每日一题补题记录8
2.20717. 1 比特与 2 比特字符有两种特殊字符:第一种字符可以用一比特0 表示第二种字符可以用两比特(10或11)表示给你一个以 0 结尾的二进制数组bits,如果最后一个字符必须是一个一比特字符,则返回 true 。简单遍历,遇见1走两步,遇见0走一步,如果能走到n-1,证明最后一个0一定是一比特字符class Solution { public boolean isOneBitCharacter(int[] bits) { int n...原创 2022-03-01 22:47:32 · 170 阅读 · 0 评论 -
每日一题补题记录9
2.23917. 仅仅反转字母给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。 所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例 1:输入:s = "ab-cd"输出:"dc-ba"示例 2:输入:s = "a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:s = "Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"很简单,左右两个指针逐渐向内扫描即可原创 2022-02-28 22:19:15 · 73 阅读 · 0 评论 -
每日一题补题记录7
2.14540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。时间复杂度比较难实现,我可以随便写出两种On的1.哈希表class Solution { public int singleNonDuplicate(int[] nums) { HashMap<Integer,Inte原创 2022-02-16 20:49:10 · 273 阅读 · 0 评论 -
每日一题补题记录6
2.101447. 最简分数给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。这里要搞清楚最简分数的定义,也就是分子分母的最大公约数为1的分数,因为我们i/j递增,可以确保不会有重复分数,只需要满足最简即可,想要计算最大公约数,我们使用欧几里得算法gcd,也就是gcd(x,y)=gcd(y,x%y),如果xy可以整除返回较小数即可,我们始终保证大数在前。class Solution { p原创 2022-02-12 15:44:48 · 210 阅读 · 0 评论 -
每日一题补题记录5
2.71405. 最长快乐字符串如果字符串中不含有任何 'aaa','bbb' 或 'ccc' 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数 a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s:s 是一个尽可能长的快乐字符串。s 中 最多 有a 个字母 'a'、b个字母 'b'、c 个字母 'c' 。s 中只含有 'a'、'b' 、'c' 三种字母。如果不存在这样的字符串 s ,请返回一个空字符串 ""。方法:贪心,思路比较简单,.原创 2022-02-11 23:47:22 · 324 阅读 · 0 评论 -
每日一题补题记录4
2.41725. 可以形成最大正方形的矩形数目给你一个数组 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。如果存在 k 同时满足 k <= li 和 k <= wi ,就可以将第 i 个矩形切成边长为 k 的正方形。例如,矩形 [4,6] 可以切成边长最大为 4 的正方形。设 maxLen 为可以从矩形数组 rectangles 切分得到的 最大正方形 的边长。请你统计有多少个矩形能够切出边原创 2022-02-10 00:45:16 · 148 阅读 · 0 评论 -
每日一题补题记录3
1763. 最长的美好子字符串当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。比方说,"abABB" 是美好字符串,因为 'A' 和 'a' 同时出现了,且 'B' 和 'b' 也同时出现了。然而,"abA" 不是美好字符串因为 'b' 出现了,而 'B' 没有出现。给你一个字符串 s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。如果不存在美好子字符串,请你返回一个空字符串。方法一原创 2022-02-08 15:44:08 · 412 阅读 · 0 评论 -
LeetCode1996. 游戏中弱角色的数量
1996. 游戏中弱角色的数量你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色 i 弱于 存在的另一个角色 j ,那么 attackj > attacki 且 defensej > defen原创 2022-01-28 23:53:04 · 2083 阅读 · 0 评论 -
每日一题补题记录2
2045. 到达目的地的第二短时间城市用一个 双向连通 图表示,图中有 n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi]表示一条节点ui 和节点vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time分钟。每个节点都有一个交通信号灯,每 change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都同时 改变。你...原创 2022-01-27 22:57:22 · 503 阅读 · 0 评论 -
每日一题补题记录1
1345. 跳跃游戏 IV给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标 i 跳到下标:i + 1满足:i + 1 < arr.lengthi - 1满足:i - 1 >= 0j满足:arr[i] == arr[j]且i != j请你返回到达数组最后一个元素的下标处所需的最少操作次数。注意:任何时候你都不能跳到数组外面。BFS,每一步都有三个跳法,注意每个值的等值跳只会跳一次,直接跳到最后一个等值位,然后不能再...原创 2022-01-26 23:47:58 · 551 阅读 · 0 评论 -
LeetCode2045. 到达目的地的第二短时间
2045. 到达目的地的第二短时间城市用一个 双向连通 图表示,图中有 n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi] 表示一条节点 ui 和节点 vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time 分钟。每个节点都有一个交通信号灯,每 change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都 同时 改变。你原创 2022-01-24 23:01:17 · 311 阅读 · 0 评论 -
LeetCode 12.5每日一题
372. 超级次方你的任务是计算ab对1337取模,a是一个正整数,b是一个非常大的正整数且会以数组形式给出。a^b=(a^(b/10))^10*a^(b%10)每次算最后一位,前面的递归处理,从最后一位倒置处理class Solution { int MOD = 1337; //计算的过程,b从尾到头计算幂,去掉最后一位,计算最后一位的幂,再考虑前面所有位的dfs值^10,*最后一位的幂%MOD public int superPow(int a, i...原创 2021-12-05 13:01:13 · 3984 阅读 · 0 评论 -
LeetCode784最短补全词
748. 最短补全词给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 。补全词 是一个包含 licensePlate 中所有的字母的单词。在所有补全词中,最短的那个就是 最短补全词 。在匹配 licensePlate 中的字母时:忽略licensePlate 中的 数字和空格 。不区分大小写。如果某个字母在 licensePlate 中出现不止一次,那么该字母在补全词中的出现次数应当一致或者更多。例如:licen..原创 2021-12-10 12:55:42 · 284 阅读 · 0 评论 -
LeetCode 12.2每日一题
506. 相对名次给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 "Gold Medal" 。名次第 2 的运动员获银牌 "Silver Medal" 。名次第 3 的运动员获铜牌 "Bronze Medal" 。从名次第 4 到第 n 的运原创 2021-12-02 08:49:02 · 1016 阅读 · 0 评论 -
LeetCode709 转换成小写字母
easyclass Solution { public String toLowerCase(String s) { return s.toLowerCase(); }}class Solution: def toLowerCase(self, s: str) -> str: return s.lower()原创 2021-12-12 22:44:01 · 154 阅读 · 0 评论 -
LeetCode794 有效的井字游戏
794. 有效的井字游戏给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。井字游戏的棋盘是一个 3 x 3 数组,由字符 ' ','X' 和 'O' 组成。字符 ' ' 代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(' ')中。玩家 1 总是放字符 'X' ,而玩家 2 总是放字符 'O' 。'X' 和 'O' 只允许放置在空位中,不允许对已放有字符的位置进行填充。当有 3 个相.原创 2021-12-09 19:37:57 · 67 阅读 · 0 评论 -
LeetCode 12.4每日一题
python天下第一,说了114514次了,counter真的是真神,Java?狗都不用!class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: a = Counter(ransomNote) b = Counter(magazine) return (a & b) == a...原创 2021-12-04 13:39:19 · 72 阅读 · 0 评论 -
LeetCode 994-腐烂的橘子
994. 腐烂的橘子在给定的网格中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。这题是BFS,逐层腐化,需要注意的一个点是,记录时间,也就是BFS的层数,可以在每一轮BFS之前先记录队列中节点数,然后遍历完后时间++,考虑到又可能无法完全腐化,需要加入一个count记录新鲜水果...原创 2021-12-07 15:55:52 · 271 阅读 · 0 评论 -
LeetCode 11.27每日一题
519. 随机翻转矩阵给你一个 m x n 的二元矩阵 matrix ,且所有值被初始化为 0 。请你设计一个算法,随机选取一个满足matrix[i][j] == 0 的下标(i, j) ,并将它的值变为 1 。所有满足 matrix[i][j] == 0 的下标 (i, j) 被选取的概率应当均等。尽量最少调用内置的随机函数,并且优化时间和空间复杂度。实现 Solution 类:Solution(int m, int n) 使用二元矩阵的大小 m 和 n 初始化该对象int[] f...原创 2021-11-27 14:22:51 · 251 阅读 · 0 评论 -
LeetCode 12.1每日一题
1446. 连续字符给你一个字符串s,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。很难说怎么写,简单遍历即可class Solution: def maxPower(self, s: str) -> int: ans, cnt = 1, 1 for i in range(1, len(s)): if s[i] == s[i - 1]: cnt ..原创 2021-12-01 12:54:09 · 62 阅读 · 0 评论 -
LeetCode 1162.地图分析(bfs)
1162. 地图分析你现在手里有一份大小为N x N 的 网格 grid,上面的每个 单元格 都用0和1标记好了。其中0代表海洋,1代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的。我们这里说的距离是「曼哈顿距离」(Manhattan Distance):(x0, y0) 和(x1, y1)这两个单元格之间的距离是|x0 - x1| + |y0 - y1|。如果网格上只有陆地或者海洋,请返回-1。寻找最近距离,很自然的想到BF...原创 2021-12-08 13:00:41 · 251 阅读 · 0 评论 -
LeetCode 630. 课程表 III
630. 课程表 III这里有 n 门不同的在线课程,按从 1 到 n编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课,并且必须在不晚于 lastDayi 的时候完成。你的学期从第 1 天开始。且不能同时修读两门及两门以上的课程。返回你最多可以修读的课程数目。这个题干一看就是贪心,首先思路就是先按时间排序,然后如果课程有时间上,就先把它的持续时间压入一个大根堆。当找.原创 2021-12-14 14:42:23 · 868 阅读 · 0 评论 -
LeetCode 322
322.零钱兑换(中等)给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。经典完全背包问题,状态变量:dp[i][j] 表示从[0,i]个硬币中需要选取硬币总和为j的个数,默认值-1表示无法从硬币中选取一定个数凑成amount边界条件:因为硬币可以重复取,所以当j >= coint时,是从当前dp[i].原创 2021-11-25 21:41:24 · 245 阅读 · 0 评论 -
LeetCode 12.3每日一题
1005. K 次取反后最大化的数组和给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。思路是这样的,一个简单的贪心算法,排序之后记录负数数量1.有负数1.1步数小于负数,从小到大依次反转负数即可1.2步数大于负数数量,反转完全部负数后持续反转最小的数即可2.无负数持续反转最小..原创 2021-12-03 13:25:15 · 261 阅读 · 0 评论 -
LeetCode 12.6每日一题
1816. 截断句子句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。例如,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。给你一个句子 s 和一个整数 k ,请你将 s 截断 ,使截断后的句子仅含 前 k 个单词。返回 截断 s 后得到的句子。class Solution { pu.原创 2021-12-06 13:55:10 · 196 阅读 · 0 评论 -
leetcode 11.30每日一题
400. 第 N 位数字给你一个整数n,请你在无限的整数序列[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]中找出并返回第n位数字。原创 2021-11-30 17:18:03 · 82 阅读 · 0 评论 -
Leetcode458
458. 可怜的小猪有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有minutesToTest 分钟时间来确定哪桶液体是有毒的。喂猪的规则如下:选择若干活猪进行喂养可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。过了 minutes.原创 2021-11-25 13:35:06 · 85 阅读 · 0 评论 -
LeetCode 846. 一手顺子
846. 一手顺子Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false 。...原创 2021-12-30 22:08:11 · 330 阅读 · 0 评论 -
LeetCode 825. 适龄的朋友(双指针)
825. 适龄的朋友在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:age[y] <= 0.5 * age[x] + 7age[y] > age[x]age[y] > 100 && age[x] < 100否则,x 将会向 y 发送一条好友请求。注意,如果 x 向 y 发送一条好友请求,y 不必也向 .原创 2021-12-27 13:26:05 · 294 阅读 · 0 评论 -
LeetCode1995. 统计特殊四元组
1995. 统计特殊四元组给你一个 下标从 0 开始 的整数数组 nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 :nums[a] + nums[b] + nums[c] == nums[d] ,且a < b < c < d方法一:注意到数据取值范围我TM直接暴力遍历,四层循环,虽然但是,就能AC!(这才是easy题目啊)class Solution { public int countQuadruplets(int原创 2021-12-29 23:54:52 · 512 阅读 · 0 评论 -
LeetCode851 喧闹和富有
851. 喧闹和富有https://leetcode-cn.com/problems/loud-and-rich/有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为x的人简称为 "personx"。给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 personai比 personbi更有钱。另给你一个整数数组 quiet ,其中quiet[i...原创 2021-12-15 12:37:56 · 84 阅读 · 0 评论 -
LeetCode 1518. 换酒问题
小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。模拟题,其实这种题目咱们小时候做的话,都会考虑借个瓶子再还的(无本万利属于是)class Solution { public int numWaterBottles(int numBottles, int numExchange) { int ans=numBottles...原创 2021-12-17 11:59:55 · 197 阅读 · 0 评论 -
LeetCode 1044. 最长重复子串(码住,没学会)
class Solution { public String longestDupSubstring(String s) { Random random = new Random(); // 生成两个进制 int a1 = random.nextInt(75) + 26; int a2 = random.nextInt(75) + 26; // 生成两个模 int mod1 = random.nextI.原创 2021-12-23 23:40:19 · 62 阅读 · 0 评论 -
LeetCode 1609 奇偶树(BFS)
1609. 奇偶树https://leetcode-cn.com/problems/even-odd-tree/如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。.原创 2021-12-25 21:40:53 · 205 阅读 · 0 评论