![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
半濠春水
这个作者很懒,什么都没留下…
展开
-
LeetCode 392. 判断子序列
题目描述给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T的子序列。在这种情况下,你会怎样改变代码?致谢:特别感谢 @pbrother 添加此问题并且创建所有测试用例。示例 1:输入:s = “a.原创 2022-02-16 04:37:31 · 81 阅读 · 0 评论 -
LeetCode 204.计数质数
题目描述给定整数 n ,返回所有小于非负整数 n 的质数的数量 。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 10 ^ 6//暴力破解class Solution{public: //判断一个数字是否是质数 bool whether_prime(int n) { .原创 2022-02-12 21:16:36 · 639 阅读 · 0 评论 -
LeetCode 202.快乐数
题目描述编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。示例 1:输入:n = 19输出:true解释:1 ^ 2 + 9 ^ 2 = 828 ^ 2 + 2 ^ 2 = 686 ^ 2 + 8 ^ 2 = 100.原创 2022-02-12 20:39:42 · 260 阅读 · 0 评论 -
LeetCode 137.只出现一次的数字 II
题目描述给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99提示:1 <= nums.length <= 3 * 104-2^31 <= nums[i] <= 2 ^ 31 - 1nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次进阶:你的.原创 2022-02-12 00:52:59 · 210 阅读 · 0 评论 -
LeetCode 136. 只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4//暴力破解class Solution{public: int singleNumber(vector<int> &nums) { int len = nu.原创 2022-02-11 18:39:29 · 470 阅读 · 0 评论 -
LeetCode 836. 矩形重叠
题目描述矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴,左右边平行于 y 轴。如果相交的面积为 正 ,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:re.原创 2022-02-11 02:56:04 · 249 阅读 · 0 评论 -
LeetCode 771. 宝石与石头
题目描述给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。示例 1:输入:jewels = “aA”, stones = “aAAbbbb”输出:3示例 2:输入:jewels = “z”, stones = “ZZ”输出:0提示:1 <= jewels.length, stone.原创 2022-02-11 02:28:38 · 444 阅读 · 0 评论 -
LeetCode 693. 交替位二进制数
题目描述给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例 1:输入:n = 5输出:true解释:5 的二进制表示是:101示例 2:输入:n = 7输出:false解释:7 的二进制表示是:111.示例 3:输入:n = 11输出:false解释:11 的二进制表示是:1011.提示:1 <= n <= 2^31 - 1class Solution{public: bool ha.原创 2022-02-10 03:12:53 · 6770 阅读 · 0 评论 -
LeetCode 169.多数元素
题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。//排序法class Solution{public: int majorityElement(vector<int>.原创 2022-02-10 02:13:56 · 432 阅读 · 0 评论 -
LeetCode 374.猜数字大小
题目描述猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick =.原创 2022-02-08 22:21:31 · 61 阅读 · 0 评论 -
LeetCode 448.找到所有数组中消失的数字
题目描述给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示例 2:输入:nums = [1,1]输出:[2]提示:n == nums.length1 <= n <= 10^51 <= nums[i] <= n进阶:你能在不使用额外空间且时间复杂.原创 2022-01-30 21:21:27 · 419 阅读 · 0 评论 -
LeetCode 504.七进制数
题目描述给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。示例 1:输入: num = 100输出: “202”示例 2:输入: num = -7输出: “-10”提示:-10 ^ 7 <= num <= 10 ^ 7class Solution{public: string convertToBase7(int num) { //当num为0时 if (num == 0) { .原创 2022-01-29 20:24:50 · 247 阅读 · 0 评论 -
LeetCode 367. 有效的完全平方数
题目描述给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false提示:1 <= num <= 2^31 - 1//使用内置库函数class Solution{public: bool isPerfectSquare(int num) { .原创 2022-01-29 19:51:32 · 283 阅读 · 0 评论 -
LeetCode 342.4的幂
题目描述给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x示例 1:输入:n = 16输出:true示例 2:输入:n = 5输出:false示例 3:输入:n = 1输出:true提示:-2 ^ 31 <= n <= 2 ^ 31 - 1进阶:你能不使用循环或者递归来完成本题吗?//暴力法class Solution{publi.原创 2022-01-29 19:25:28 · 127 阅读 · 0 评论 -
LeetCode 1491.去掉最低工资和最高工资后的工资平均值
题目描述给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000 。 去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1000,2000,3000]输出:2.原创 2022-01-26 02:42:11 · 125 阅读 · 0 评论 -
LeetCode 1304. 和为零的N个唯一整数
题目描述给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。示例 1:输入:n = 5输出:[-7,-1,1,3,4]解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2:输入:n = 3输出:[-1,0,1]示例 3:输入:n = 1输出:[0]提示:1 <= n <= 1000class Solution{public: vector<int&g.原创 2022-01-26 02:33:16 · 287 阅读 · 0 评论 -
LeetCode 9.回文数
题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示.原创 2022-01-25 22:33:24 · 213 阅读 · 0 评论 -
LeetCode 16. 最接近的三数之和
题目描述给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。示例 1:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 +1 = 2) 。示例 2:输入:nums = [0,0,0], target = 1输出:0提示:3 <= nums.length &l.原创 2022-01-23 12:34:24 · 5463 阅读 · 0 评论 -
LeetCode 1480.一维数组的动态和
题目描述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].原创 2022-01-17 19:51:10 · 76 阅读 · 0 评论 -
LeetCode 1464.数组中两元素的最大乘积
题目描述给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12 。示例 2:输入:nums = [1,5,4,5]输出:16解释:选择下标 i=1 和 j=3.原创 2022-01-17 19:42:16 · 82 阅读 · 0 评论 -
LeetCode 1365.有多少小于当前数字的数字
题目描述给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对于 nums[2.原创 2022-01-17 19:33:13 · 67 阅读 · 0 评论 -
LeetCode 283.移动零
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。class Solution{public: void moveZeroes(vector<int> &nums) { //左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部 .原创 2022-01-16 23:15:50 · 159 阅读 · 0 评论 -
LeetCode 326.3 的幂
题目描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x示例 1:输入:n = 27输出:true示例 2:输入:n = 0输出:false示例 3:输入:n = 9输出:true示例 4:输入:n = 45输出:false提示:-2 ^ 31 <= n <= 2 ^ 31 - 1进阶:你能不使用循环或者递归来完成本题吗?...原创 2022-01-16 23:15:41 · 146 阅读 · 0 评论 -
LeetCode 2.两数相加
题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],.原创 2022-01-16 23:14:50 · 59 阅读 · 0 评论 -
LeetCode 896.单调数列
题目描述如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。如果对于所有 i <= j,A[i]> =A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false示例 4:输入:[1,2,4.原创 2022-01-16 20:29:58 · 223 阅读 · 0 评论 -
LeetCode 747.至少是其他数字两倍的最大数
题目描述给你一个整数数组 nums ,其中总是存在唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。示例 1:输入:nums = [3,6,1,0]输出:1解释:6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是1 ,所以返回 1 。示例 2:输入:nums = [1,2,3,4]输出:-1解释:4 没有超过 3 的两倍大,所以返回 -1 。示例 3:.原创 2022-01-16 19:45:54 · 105 阅读 · 0 评论 -
LeetCode 507.完美数
题目描述对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true,否则返回 false示例 1:输入:num = 28输出:true解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7, 和 14 是 28的所有正因子。示例 2:输入:num = 6输出:true示例 3:输入:num = 496输出:true示例 4:输入:num = 8128输出:true示例 5:.原创 2022-01-15 03:21:19 · 100 阅读 · 0 评论 -
LeetCode 441.排列硬币
题目描述你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。示例 1:输入:n = 5输出:2解释:因为第三行不完整,所以返回 2 。示例 2:输入:n = 8输出:3解释:因为第四行不完整,所以返回 3 。提示:1 <= n <= 2^31 - 1class Solution{public: int.原创 2022-01-15 03:21:29 · 106 阅读 · 0 评论 -
LeetCode 941.有效的山脉数组
题目描述给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:arr.length >= 3 在 0 < i < arr.length - 1 条件下,存在 i 使得:arr[0] < arr[1] < … arr[i-1] < arr[i]arr[i] > arr[i+1] > … > arr[arr.length - 1]示例 1:输入:.原创 2022-01-15 03:21:36 · 115 阅读 · 0 评论 -
LeetCode 744.寻找比目标字母大的最小字母
题目描述给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’示例:输入: letters = [“c”, “f”, “j”] target = “a”输出: “c” 输入: letters = [“c”, “f”, “j”] target.原创 2022-01-15 03:21:43 · 117 阅读 · 0 评论 -
LeetCode 88.合并两个有序数组
题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 = [1,.原创 2022-01-14 19:13:18 · 55 阅读 · 0 评论 -
LeetCode 709.转换成小写字母
题目描述给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。示例 1:输入:s = “Hello”输出:“hello”示例 2:输入:s = “here”输出:“here”示例 3:输入:s = “LOVELY”输出:“lovely”提示:1 <= s.length <= 100s 由 ASCII 字符集中的可打印字符组成class Solution{public: string toLowerCase(string s).原创 2022-01-14 19:12:32 · 147 阅读 · 0 评论 -
LeetCode 628.三个数的最大乘积
题目描述给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入:nums = [1,2,3]输出:6示例 2:输入:nums = [1,2,3,4]输出:24示例 3:输入:nums = [-1,-2,-3]输出:-6提示:3 <= nums.length <= 104-1000 <= nums[i] <= 1000class Solution{public: int maximumProduct(.原创 2022-01-14 19:12:41 · 136 阅读 · 0 评论 -
LeetCode 217.存在重复元素
题目描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass Solution{public: bool containsDuplicate(vector<int> &.原创 2022-01-14 19:12:54 · 58 阅读 · 0 评论 -
LeetCode 274.H 指数
题目描述给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。提示:如果 .原创 2022-01-15 03:21:56 · 129 阅读 · 0 评论 -
LeetCode 724.寻找数组的中心下标
题目描述 给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释: 中心下标是 3 。 左侧数之和 sum = nu.原创 2022-01-14 14:24:05 · 145 阅读 · 0 评论 -
LeetCode 704.二分查找
题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 nu.原创 2022-01-14 14:24:16 · 67 阅读 · 0 评论 -
LeetCode 145.二叉树的后序遍历
题目描述给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root = [1,null,2,3] 输出:[3,2,1]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]提示:树中节点的数目在范围 [0, 100] 内-100 <= Node.val <= 100进阶:递归算法很简单,你可以通过迭代算法完成吗?/** * Definition for a binary tree node..原创 2022-01-14 14:24:26 · 49 阅读 · 0 评论 -
LeetCode 144.二叉树的前序遍历
题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3] 输出:[1,2,3]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]示例 4:输入:root = [1,2] 输出:[1,2] 示例 5:输入:root = [1,null,2] 输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100/.原创 2022-01-14 14:24:37 · 73 阅读 · 0 评论 -
LeetCode 94.二叉树的中序遍历
题目描述给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3] 输出:[1,3,2]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]示例 4:输入:root = [1,2] 输出:[2,1]示例 5:输入:root = [1,null,2] 输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100进阶:.原创 2022-01-14 14:24:46 · 56 阅读 · 0 评论