![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
编程开发者
这个作者很懒,什么都没留下…
展开
-
力扣-744. 寻找比目标字母大的最小字母
解释:letters 中没有一个字符在字典上大于 ‘z’,所以我们返回 letters[0]。输入: letters = [“x”,“x”,“y”,“y”], target = “z”输入: letters = [“c”, “f”, “j”],target = “a”输入: letters = [“c”,“f”,“j”], target = “c”解释:letters 中字典顺序上大于 ‘c’ 的最小字符是 ‘f’。解释:letters 中字典上比 ‘a’ 大的最小字符是 ‘c’。原创 2024-07-03 22:34:23 · 320 阅读 · 0 评论 -
力扣-2529. 正整数和负整数的最大计数
如果不是就按照代码中的逻辑求出对应的个数再比较大小。换句话讲,如果 nums 中正整数的数目是 pos ,而负整数的数目是 neg ,返回 pos 和 neg二者中的最大值。给你一个按 非递减顺序 排列的数组 nums ,返回正整数数目和负整数数目中的最大值。解释:共有 3 个正整数和 3 个负整数。解释:共有 2 个正整数和 3 个负整数。解释:共有 4 个正整数和 0 个负整数。输入:nums = [-3,-2,-1,0,0,1,2]输入:nums = [-2,-1,-1,1,2,3]原创 2024-07-02 22:44:22 · 436 阅读 · 0 评论 -
力扣-2269. 找到一个数字的 K 美丽值
给你整数 num 和 k ,请你返回 num 的 k 美丽值。一个 子字符串 是一个字符串里的连续一段字符序列。输入:num = 430043, k = 2。输入:num = 240, k = 2。子字符串能整除 num。子字符串长度为 k。允许有 前缀 0。0 不能整除任何值。原创 2024-06-15 13:04:21 · 315 阅读 · 0 评论 -
力扣-2379. 得到 K 个黑块的最少涂色次数
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 ‘W’ 要么是 ‘B’ ,表示第 i 块的颜色。一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。输入:blocks = “WBBWWBBWBW”, k = 7。输入:blocks = “WBWBBBW”, k = 2。blocks[i] 要么是 ‘W’ ,要么是 ‘B’。给你一个整数 k ,表示想要 连续 黑色块的数目。原创 2024-06-13 23:00:24 · 345 阅读 · 0 评论 -
力扣-1984. 学生分数的最小差值
给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k。从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化。输入:nums = [9,4,1,7], k = 2。输入:nums = [90], k = 1。返回可能的 最小差值。原创 2024-06-12 20:00:25 · 1215 阅读 · 0 评论 -
力扣-643. 子数组最大平均数 I
通俗的将就是窗口移动时 减去第一个元素,再加上新滑动进来的元素,就等于新窗口中元素的累加值。第2个窗口的累加和为 (1 + 2 + 3 + 4) - 1 + 5 = 14。解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75。这一行代码是点睛之笔,意思是控制一个长度为k的滑动窗口,并计算其累加和。输入:nums = [1,12,-5,-6,50,3], k = 4。第1个窗口的累加和为 1 + 2 + 3 + 4 = 10。输入:nums = [5], k = 1。原创 2024-06-11 21:39:37 · 253 阅读 · 0 评论 -
力扣-面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。如果你不使用额外的数据结构,会很加分。输入: s = “leetcode”输入: s = “abc”s[i]仅包含小写字母。原创 2024-05-25 14:39:20 · 222 阅读 · 0 评论 -
力扣-LCR 169. 招式拆解 II
某套连招动作记作仅由小写字母组成的序列 arr,其中 arr[i] 第 i 个招式的名字。请返回第一个只出现一次的招式名称,如不存在请返回空格。使用到了自定义类型的map,如果有看不明白的可以参考。,文章里边有自定义数据类型排序可以参考一下,易懂!输入:arr = “abbccdeff”输入:arr = “ccdd”原创 2024-05-23 23:19:37 · 304 阅读 · 0 评论 -
力扣-1365. 有多少小于当前数字的数字
i 且 nums[j] < nums[i]。对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[4]=3 存在三个比它小的数字:(1,2 和 2)。对于 nums[2]=2 存在一个比它小的数字:(1)。对于 nums[3]=2 存在一个比它小的数字:(1)。输入:nums = [8,1,2,2,3]输入:nums = [6,5,4,8]输入:nums = [7,7,7,7]输出:[4,0,1,1,3]输出:[2,1,0,3]输出:[0,0,0,0]原创 2024-05-22 18:56:55 · 154 阅读 · 0 评论 -
力扣-219. 存在重复元素 II
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k。如果存在,返回 true;否则,返回 false。输入:nums = [1,2,3,1,2,3], k = 2。输入:nums = [1,2,3,1], k = 3。输入:nums = [1,0,1,1], k = 1。原创 2024-05-19 11:24:08 · 160 阅读 · 0 评论 -
力扣-350. 两个数组的交集 II
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]的改变版本,大家可以先看一下,题型差不多。原创 2024-05-18 14:32:08 · 165 阅读 · 0 评论 -
力扣-2351. 第一个出现两次的字母
如果 a 的 第二次 出现比 b 的 第二次 出现在字符串中的位置更靠前,则认为字母 a 在字母 b 之前出现两次。字母 ‘c’ 是第一个出现两次的字母,因为在所有字母中,‘c’ 第二次出现的下标是最小的。给你一个由小写英文字母组成的字符串 s ,请你找出并返回第一个出现 两次 的字母。思路分析:很简单的操作,判断当前元素在容器里是否存在,不存在就插入,存在就返回。字母 ‘c’ 在下标 2 、3 和 7 处出现。只有字母 ‘d’ 出现两次,所以返回 ‘d’。字母 ‘b’ 在下标 1 和 4 处出现。原创 2024-05-15 21:31:06 · 149 阅读 · 0 评论 -
力扣-13. 罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。原创 2024-05-11 22:10:33 · 294 阅读 · 0 评论 -
力扣-128. 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。1.使用unordered_set容器过滤到重复的元素,同时也方便后续的元素数量查询操作;2.判断当前元素再数组中是否存在前一个元素,如果存在说明不是开头元素,继续往后查找。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]原创 2024-05-02 11:17:46 · 181 阅读 · 0 评论 -
力扣-349. 两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序。思路分析:两种实现方式原理是一样的都是运行set容器或map容器插入的值唯一的特性。使用set容器实现起来更加简洁。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]解释:[4,9] 也是可通过的。原创 2024-04-28 20:52:57 · 280 阅读 · 0 评论 -
力扣-283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]思路:将数组中不为0的数记下来,后边补0。利用双指针的思想,把不为0的数字挪到前边。输出: [1,3,12,0,0]输入: nums = [0]原创 2024-03-18 23:27:17 · 287 阅读 · 0 评论 -
力扣-217. 存在重复元素
给你一个整数数组 nums。如果任一值在数组中出现 至少两次 ,返回 true;如果数组中每个元素互不相同,返回 false。排序后,如果存在相同元素,前后判断必能找到相同数字,反之则不存在。输入:nums = [1,1,1,3,3,4,3,2,4,2]输入:nums = [1,2,3,1]输入:nums = [1,2,3,4]原创 2024-02-15 10:18:16 · 309 阅读 · 1 评论 -
力扣-169. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。可以看做是不同的元素相互抵消,众数肯定要多,最后剩下的就是众数。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]原创 2024-02-15 08:52:53 · 340 阅读 · 0 评论 -
力扣-125. 验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。2.设置一前一后2个指针,跳过非字母数字的字符,然后对比2个字符是否相同,如果存在不相同的那就不是回文串。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。解释:“raceacar” 不是回文串。原创 2024-02-14 21:29:01 · 385 阅读 · 0 评论 -
力扣-345. 反转字符串中的元音字母
元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现不止一次。给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。输入:s = “leetcode”输入:s = “hello”输出:“leotcede”输出:“holle”原创 2024-02-14 09:29:06 · 643 阅读 · 0 评论 -
力扣-344. 反转字符串
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输出:[“o”,“l”,“l”,“e”,“h”]原创 2024-02-14 09:06:53 · 443 阅读 · 0 评论 -
力扣-1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。原创 2024-02-14 08:57:10 · 254 阅读 · 0 评论 -
力扣-28. 找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。原创 2024-02-13 20:49:42 · 737 阅读 · 0 评论 -
力扣-260. 只出现一次的数字 III
给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。3.两个只出现1次的数字,那么这个Bit1不是x就是y的,再一次&全部的数字,就可以得到x或者y。2.x &-x 可以生成一个保留最右边 bit为1的数字,其他bit都置为0。1.异或两个相同的数,等于没有异或,经常用于消除出现两次的数字。输入:nums = [1,2,1,3,2,5]此题还是有难度的,我看了好多题解才理解上去。解释:[5, 3] 也是有效的答案。输入:nums = [-1,0]输入:nums = [0,1]原创 2024-02-09 13:03:44 · 393 阅读 · 0 评论 -
力扣-137. 只出现一次的数字 II
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。请你找出并返回那个只出现了一次的元素。2.对和进行取%判断,如果对应位不能整除,则此位就是多出来的那个一个数字;你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。输入:nums = [0,1,0,1,0,1,99]1.遍历32位,求出数组中所有数的每一位的和;输入:nums = [2,2,3,2]原创 2024-02-08 17:07:42 · 604 阅读 · 0 评论 -
力扣-278. 第一个错误的版本
实现一个函数来查找第一个错误的版本。你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。, n],你想找出导致之后所有版本出错的第一个错误的版本。题的简单版本,大家可以参考我的这篇文章,看完一定可以明白,此题就是小儿科!1.题目中的调用函数的返回值false是正确的版本!输入:n = 5, bad = 4。输入:n = 1, bad = 1。所以,4 是第一个错误的版本。原创 2024-01-09 23:24:22 · 447 阅读 · 0 评论 -
力扣-34. 在排序数组中查找元素的第一个和最后一个位置
3.需要特别注意的是第一次查找找到target时,做的right = mid - 1;给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。输入:nums = [], target = 0。2.第二次找到最后一个target的位置;输出:[-1,-1]输出:[-1,-1]原创 2024-01-09 23:05:50 · 676 阅读 · 0 评论 -
力扣-367. 有效的完全平方数
如果 num 是一个完全平方数,则返回 true ,否则返回 false。解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。此题和力扣的第69题基本一样,大家可以参考一下我的代码。不能使用任何内置的库函数,如 sqrt。输入:num = 16。输入:num = 14。原创 2024-01-07 12:09:58 · 677 阅读 · 0 评论 -
力扣-35. 搜索插入位置
2.返回值设置为left,当这个数字不在数组中时,left这个返回值的索引位置正好是不存在的这个数应该在数组中出现的位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。1.如果查找到正好的target,这种情况就是直接查找到值,不再提了。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。原创 2024-01-07 11:37:22 · 858 阅读 · 0 评论 -
力扣-69.x的平方根
要注意最外边的返回值,要记住先决条件k * k原创 2024-01-06 12:29:12 · 382 阅读 · 0 评论 -
力扣-657. 机器人能否返回原点
此题比较容易,只需要记录上下左右出现的次数即可。原创 2024-01-02 21:02:47 · 360 阅读 · 0 评论 -
力扣-206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]链表中节点的数目范围是 [0, 5000]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2024-01-01 21:08:12 · 841 阅读 · 0 评论 -
力扣-242. 有效的字母异位词
此题和下边两道题目是一样的就是遍历temp数组时的判断条件不一样,大家可以参考一下我的下边两篇文章简单易懂。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = “anagram”, t = “nagaram”输入: s = “rat”, t = “car”原创 2023-12-12 20:50:12 · 147 阅读 · 0 评论 -
力扣-383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。遍历temp数组,如果数组中有小于0的数字说明,ransomNote中有字母没有在magazine中出现。输入:ransomNote = “aa”, magazine = “aab”输入:ransomNote = “aa”, magazine = “ab”输入:ransomNote = “a”, magazine = “b”2.遍历magazine记录字母出现的次数;原创 2023-12-12 20:31:10 · 223 阅读 · 0 评论 -
力扣-389. 找不同
3.第三次遍历数组temp,求出对应元素小于0的位置,说明此处多减去了1次,正好是t字符串多添加的字母。1.第一次遍历字符串s,获取到每个字母出现的个数。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。2.第二次遍历字符串t,将每次出现字母的对应次数减1;输入:s = “abcd”, t = “abcde”给定两个字符串 s 和 t ,它们只包含小写字母。输入:s = “”, t = “y”解释:‘e’ 是那个被添加的字母。请找出在 t 中被添加的字母。s 和 t 只包含小写字母。原创 2023-12-10 14:04:42 · 226 阅读 · 0 评论 -
力扣-387. 字符串中的第一个唯一字符
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。3.第二次遍历,遍历数组中出现一次的字母,并将在字符串中的位置进行返回。1.开辟一个数组,用来存放26个英文字母对应出现的次数;2.第一次遍历,将对应字母出现的次数存入到数组中;输入: s = “loveleetcode”输入: s = “leetcode”输入: s = “aabb”原创 2023-12-10 13:26:57 · 117 阅读 · 0 评论 -
力扣-151. 反转字符串中的单词
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。s 中使用至少一个空格将字符串中的 单词 分隔开。解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。给你一个字符串 s ,请你反转字符串中 单词 的顺序。解释:反转后的字符串中不能存在前导空格和尾随空格。3.在反转每一个单词,就达到了题目中的要求。原创 2023-12-09 20:47:17 · 241 阅读 · 0 评论 -
力扣-557. 反转字符串中的单词 III
力扣-557. 反转字符串中的单词 III。原创 2023-12-09 15:00:17 · 67 阅读 · 0 评论 -
力扣-344. 反转字符串
力扣-344. 反转字符串。原创 2023-12-03 21:08:59 · 51 阅读 · 0 评论 -
力扣-434. 字符串中的单词数
1.当前位置不是空格,但上一个位置是空格加1计数;2.注意s[0]时的判断。原创 2023-12-03 20:22:52 · 48 阅读 · 0 评论