
Leetcode
文章平均质量分 57
记录学习,争取每天一道
在心里下过一场雨
这个作者很懒,什么都没留下…
展开
-
Leetcode704:二分查找
Java。给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。nums 的每个元素都将在 [-9999, 9999]之间。解释: 2 不存在 nums 中因此返回 -1。你可以假设 nums 中的所有元素是不重复的。原创 2022-12-13 21:30:27 · 178 阅读 · 1 评论 -
Leetcode1832:判断句子是否为全字母句
Java。解题思路:用一个整数 bit 记录出现过的字母,其中 bit 的第 i 位表示第 i 个字母是否出现过。给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为全字母句。解题思路:两次循环,第一次存放出现过的字母,第二次找没有出现过的字母。解释:sentence 包含英语字母表中每个字母至少一次。时间:2ms 空间:39.2MB。时间:2ms 空间:39.7MB。时间:4ms 空间:39.8MB。原创 2022-12-13 18:48:06 · 720 阅读 · 0 评论 -
Leetcode1827:最少操作使数组递增
Java。我们称数组 nums 是严格递增的 ,当它满足对于所有的 0原创 2022-12-11 18:30:09 · 402 阅读 · 0 评论 -
Leetcode806:写字符串需要的行数
Java把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 'a' 需要的单位, widths[1] 代表 'b' 需要的单位,..., widths[25] 代表 'z' 需要的单位。除去字母'a'所有的字符都是相同的单位10,并且字符串 "bbbcccdddaa" 将会覆盖 9 * 10 + 2 * 4 = 98 个单位.原创 2022-12-09 22:04:15 · 181 阅读 · 0 评论 -
Leetcode1790:仅执行一次字符串交换能否使两个字符串相等
Java,一次字符串交换操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。解释:例如,交换 s2 中的第一个和最后一个字符可以得到 "bank"输入:s1 = "attack", s2 = "defend"输入:s1 = "bank", s2 = "kanb"输入:s1 = "kelb", s2 = "kelb"输入:s1 = "abcd", s2 = "dcba"解释:两个字符串已经相等,所以不需要进行字符串交换。解释:一次字符串交换无法使两个字符串相等。原创 2022-12-09 16:55:40 · 502 阅读 · 0 评论 -
Leetcode1780:判断一个数字是否可以表示成三的幂的和
java,给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false。对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。若符合题意,则都是用不同的3的幂次方相加而得,所以每一个3的幂次方只能用一次或0次。把他们转化为三进制,则每一位上都是1 or 0,不能是2。解释:91 = 30 + 32 + 34。时间:0ms 空间:39.5MB。解释:12 = 31 + 32。原创 2022-12-09 16:16:04 · 204 阅读 · 0 评论 -
Leetcode693:交替位二进制数
Java 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例 1:示例 2:示例 3:提示:解题思路位运算时间:0ms 空间:38.3MB原创 2022-12-07 17:03:36 · 245 阅读 · 0 评论 -
Leetcode1805:字符串中不同整数的数目
Java, 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。 返回对 word 完成替换后形成的不同整数的数目。 只有当两个整数的不含前导零的十进制表示不同原创 2022-12-06 20:23:19 · 247 阅读 · 0 评论 -
Leetcode1758:生成交替二进制字符串的最少操作数
Java, 给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。 返回使 s 变成 交替字符串 所需的 最少 操作数。示例 1:示例 2:示例 3原创 2022-12-06 20:21:01 · 143 阅读 · 0 评论 -
Leetcode682:棒球比赛
Java,你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则: 整数 x - 表示本回合新获得分数 x "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的原创 2022-12-06 20:18:35 · 515 阅读 · 1 评论 -
Leetcode1752:检查数组是否经排序和轮转得到
Java题解。给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。 源数组中可能存在重复项 。 注意:我们称数组 A 在轮转 x 个位置后得到长度相同的数组 B ,当它们满足 A[i] == B[(i+x) % A.length]原创 2022-12-06 20:15:45 · 331 阅读 · 0 评论 -
Leetcode680:验证回文串 ||
Java,请你判断 s 是否能成为回文字符串:如果能,返回 true;否则,返回 false。给你一个字符串 s,最多 可以从中删除一个字符。遇到不相同的,向后或向前跳一个字符继续判断。解释:你可以删除字符 'c'。利用双指针,前后同时比较是否相同。时间:6ms 空间:42.3MB。输入:s = "abca"输入:s = "aba"输入:s = "abc"s 由小写英文字母组成。原创 2022-11-26 14:17:38 · 342 阅读 · 0 评论 -
Leetcode809:情感丰富的文字
Java,例如,以 "hello" 为例,我们可以对字母组 "o" 扩张得到 "hellooo",但是无法以同样的方法得到 "helloo" 因为字母组 "oo" 长度小于 3。如果 s = "helllllooo",那么查询词 "hello" 是可扩张的,因为可以对它执行这两种扩张操作使得 query = "hello" -> "hellooo" -> "helllllooo" = s。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", "eee", "ll", "ooo"。原创 2022-11-26 10:45:30 · 111 阅读 · 0 评论 -
Leetcode645:错误的集合
Java,集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字并且有一个数字重复。原创 2022-11-26 10:43:29 · 119 阅读 · 0 评论 -
Leetcode674:最长连续递增序列
Java,连续递增的子序列可以由两个下标 l 和 r(l < r)确定,如果对于每个 l原创 2022-11-26 10:41:02 · 124 阅读 · 0 评论 -
Leetcode1742:盒子中小球的最大数量
Java你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。原创 2022-11-23 23:19:06 · 130 阅读 · 0 评论 -
Leetcode643:子数组最大平均数 I
Java请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。给你一个由 n 个元素组成的整数数组 nums 和一个整数 k。原创 2022-11-23 23:16:24 · 282 阅读 · 0 评论 -
Leetcode804:唯一摩尔斯密码词
Java给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。原创 2022-11-23 23:14:27 · 144 阅读 · 0 评论 -
Leetcode628:三个数的最大乘积
Java给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。排序后,只需考虑最小的两个值及最大的值的乘积 和 最大的三个值的乘积。原创 2022-11-23 23:10:56 · 190 阅读 · 0 评论 -
Leetcode1716:计算力扣银行的钱
Java给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10。原创 2022-11-23 23:08:35 · 123 阅读 · 0 评论 -
Leetcode1732:找到最高海拔
Java给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0原创 2022-11-23 23:06:18 · 233 阅读 · 0 评论 -
Leetcode101:对称二叉树
Java,若左子树的左孩子和右子数的右孩子不相等或左子树的右孩子和右子数的左孩子不相等,就返回false。给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2022-11-18 19:59:54 · 212 阅读 · 0 评论 -
Leetcode1710:卡车上的最大单元数
Java,只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。原创 2022-11-18 19:49:05 · 314 阅读 · 0 评论 -
Leetcode775:全局倒置与局部倒置
Java,nums 是范围 [0, n - 1] 内所有数字组成的一个排列。解释:有 1 个全局倒置,和 1 个局部倒置。原创 2022-11-18 19:45:04 · 94 阅读 · 0 评论 -
Leetcode605:种花问题
Java题解:假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。原创 2022-11-18 19:42:46 · 127 阅读 · 0 评论 -
Leetcode1704:判断字符串的两半是否相似
两个字符串 相似 的前提是它们都含有相同数目的元音('a','e','i','o','u','A','E','I','O','U')。解释:a = "text" 且 b = "book"。a 中有 1 个元音,b 中有 2 个元音。解释:a = "bo" 且 b = "ok"。a 中有 1 个元音,b 也有 1 个元音。将其拆分成长度相同的两半,前一半为 a ,后一半为 b。注意,元音 o 在 b 中出现两次,记为 2 个。输入:s = "textbook"输入:s = "book"原创 2022-11-12 20:08:41 · 612 阅读 · 0 评论 -
Leetcode2460:对数组执行操作
如果 nums[i] == nums[i + 1] ,则 nums[i] 的值变成原来的 2 倍,nums[i + 1] 的值变成 0。- i = 1: nums[1] 和 nums[2] 相等,nums[1] 的值变成原来的 2 倍,nums[2] 的值变成 0。数组变成 [1,4,0,2,0,0]。例如,数组 [1,0,2,0,0,1] 将所有 0 移动到末尾后变为 [1,2,1,0,0,0]。执行完所有操作后,将 0 全部移动到数组末尾,得到结果数组 [1,4,2,0,0,0]。原创 2022-11-10 15:21:00 · 508 阅读 · 0 评论 -
Leetcode5:最长回文子串(待学习)
给你一个字符串 s,找到 s 中最长的回文子串。1、从头开始遍历所有的点,寻找以它为中心的回文串。解释:"aba" 同样是符合题意的答案。时间:16ms 空间:42MB。输入:s = "babad"输入:s = "cbbd"s 仅由数字和英文字母组成。(还未学习,学完再来更新)2、不断更新最大回文串。原创 2022-11-09 11:18:08 · 136 阅读 · 0 评论 -
Leetcode509:斐波那契数
斐波那契数 F(n)F(n) 是齐次线性递推,根据递推方程 F(n)=F(n−1)+F(n−2),可以写出这样的特征方程:x^2=x+1。F(n) = F(n - 1) + F(n - 2),其中 n > 1。解释:F(2) = F(1) + F(0) = 1 + 0 = 1。解释:F(3) = F(2) + F(1) = 1 + 1 = 2。解释:F(4) = F(3) + F(2) = 2 + 1 = 3。给定 n ,请计算 F(n)。时间:0ms 空间:38MB。时间:0ms 空间:38MB。原创 2022-10-28 15:32:23 · 245 阅读 · 0 评论 -
Leetcode575:分糖果
给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。解释:Alice 只能吃 4 / 2 = 2 枚糖,不管她选择吃的种类是 [1,2]、[1,3] 还是 [2,3],她只能吃到两种不同类的糖。解释:Alice 只能吃 4 / 2 = 2 枚糖,尽管她能吃 2 枚,但只能吃到 1 种糖。输入:candyType = [1,1,2,2,3,3]输入:candyType = [1,1,2,3]原创 2022-11-07 17:29:53 · 189 阅读 · 0 评论 -
Leetcode594:最长和谐子序列
数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是 1。1、遍历第一次nums,使用hashmap,记录每一个值及其出现的次数。输入:nums = [1,3,2,2,5,2,3,7]解释:最长的和谐子序列是 [3,2,2,2,3]输入:nums = [1,2,3,4]输入:nums = [1,1,1,1]原创 2022-11-07 17:26:56 · 347 阅读 · 0 评论 -
Leetcode657:机器人能否返回原点
机器人的有效动作有 R(右),L(左),U(上)和 D(下)。“R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。解释:机器人向上移动一次,然后向下移动一次。如果机器人在完成所有动作后返回原点,则返回 true。moves 只包含字符 'U', 'D', 'L' 和 'R'3、遇U,L加一,遇D,R减一。原创 2022-11-07 17:19:23 · 167 阅读 · 0 评论 -
Leetcode796:旋转字符串
给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true。例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea'。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。输入: s = "abcde", goal = "cdeab"输入: s = "abcde", goal = "abced"s 和 goal 由小写英文字母组成。原创 2022-10-30 13:38:05 · 195 阅读 · 0 评论 -
Leetcode1106:解析布尔表达式
"&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND)"|(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 或的运算(OR)expression[i] 由 {'(', ')', '&', '|', '!', 't', 'f', ','} 中的字符组成。输入:expression = "|(&(t,f,t),!"f",运算结果为 False。原创 2022-11-07 17:23:35 · 358 阅读 · 0 评论 -
Leetcode1662:检查两个字符串数组是否相等
输入:word1 = ["abc", "d", "defg"], word2 = ["abcddefg"]输入:word1 = ["ab", "c"], word2 = ["a", "bc"]输入:word1 = ["a", "cb"], word2 = ["ab", "c"]数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。word1 表示的字符串为 "ab" + "c" -> "abc"word2 表示的字符串为 "a" + "bc" -> "abc"两个字符串相同,返回 true。原创 2022-11-01 16:45:26 · 211 阅读 · 0 评论 -
Leetcode1684:统计一致字符串的数目
输入:allowed = "cad", words = ["cc","acd","b","ba","bac","bad","ac","d"]输入:allowed = "abc", words = ["a","b","c","ab","ac","bc","abc"]输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"]解释:字符串 "cc","acd","ac" 和 "d" 是一致字符串。解释:所有字符串都是一致的。原创 2022-11-09 10:31:05 · 171 阅读 · 0 评论 -
Leetcode1768:交替合并字符串
如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。解释:注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。解释:注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。输入:word1 = "abc", word2 = "pqr"输入:word1 = "ab", word2 = "pqrs"输入:word1 = "abcd", word2 = "pq"输出:"apbqcr"输出:"apbqrs"输出:"apbqcd"原创 2022-10-23 11:56:18 · 167 阅读 · 0 评论 -
Leetcode1822:数组元素积的符号
解释:数组中所有值的乘积是 144 ,且 signFunc(144) = 1。解释:数组中所有值的乘积是 -1 ,且 signFunc(-1) = -1。解释:数组中所有值的乘积是 0 ,且 signFunc(0) = 0。输入:nums = [-1,-2,-3,-4,3,2,1]2、记录负数的个数,如果个数不为2的倍数,返回-1。如果 x 是负数,返回 -1。输入:nums = [-1,1,-1,1,-1]输入:nums = [1,5,0,2,-3]1、如果数组中有0,直接返回0。原创 2022-10-27 15:42:45 · 174 阅读 · 0 评论 -
leetcode3:无重复字符的最长字串
java两种结构原创 2022-10-19 16:13:10 · 180 阅读 · 0 评论 -
Leetcode26:删除有序数组中的重复项
java双指针原创 2022-10-19 14:52:36 · 97 阅读 · 0 评论