![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
hfkekxbhsjw
六年级新生
展开
-
Leetcode 404 左子叶之和
这道题是一道很典型的树的递归问题。分析递归问题的一大关键在于确定递归边界,也就是确定最小问题。就是把负责的问题极端化到一个很简单的情况,而所有复杂的问题都可以一步一步化归到这个最简单的最小问题。这道题的最小问题有两个,我们一个一个地来分析。至于为什么不是当前的结点是左子叶呢?其实也是可以的,但是我们得要知道当前的结点它父结点的左子叶还是右子叶,那就要新增一个函数参数用于标识。那么就就返回这个子叶的值。原创 2022-10-08 21:03:04 · 426 阅读 · 0 评论 -
Leetcode 173 二叉搜索树迭代器
173. 二叉搜索树迭代器难度中等576实现一个二叉搜索树迭代器类BSTIterator,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root)初始化BSTIterator类的一个对象。BST 的根节点root会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。 boolean hasNext()如果向指针右侧遍历存在数字,则返回true;否则返回false。 int...原创 2022-03-28 09:19:12 · 150 阅读 · 0 评论 -
Leetcode 112 路径总和
题目描述给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点路径如上图所示。示例原创 2022-03-08 23:21:24 · 133 阅读 · 0 评论 -
Leetcode 111 二叉树的最小深度
题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000通过次数340,480提交次数685.原创 2022-03-08 23:09:32 · 88 阅读 · 0 评论 -
Leetcode 781 森林中的兔子
781. 森林中的兔子难度中等203森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在answers数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝色。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中..原创 2021-12-06 18:31:14 · 103 阅读 · 0 评论 -
Leetcode 443 压缩字符串
443. 压缩字符串难度中等273收藏分享切换为英文接收动态反馈给你一个字符数组chars,请使用下述算法压缩:从一个空字符串s开始。对于chars中的每组连续重复字符:如果这一组长度为1,则将字符追加到s中。 否则,需要向s追加字符,后跟这一组的长度。压缩后得到的字符串s不应该直接返回,需要转储到字符数组chars中。需要注意的是,如果组长度为10或10以上,则在chars数组中会被拆分为多个字符。请在修改完输入数组后,返回该数...原创 2021-12-01 18:32:26 · 138 阅读 · 0 评论 -
Leetcode 18 四数之和
18. 四数之和难度中等1024收藏分享切换为英文接收动态反馈给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< n a、b、c和d互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target你可以...原创 2021-12-01 10:13:16 · 157 阅读 · 0 评论 -
Leetcode 11 盛最多水的容器
11. 盛最多水的容器难度中等2980给你n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai)。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai)和(i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表...原创 2021-11-30 21:42:07 · 99 阅读 · 0 评论 -
Leetcode 1838 最高频元素的频数
1838. 最高频元素的频数难度中等191元素的频数是该元素在一个数组中出现的次数。给你一个整数数组nums和一个整数k。在一步操作中,你可以选择nums的一个下标,并将该下标对应元素的值增加1。执行最多k次操作后,返回数组中最高频元素的最大可能频数。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元...原创 2021-11-30 20:33:27 · 102 阅读 · 0 评论 -
Leetcode 1052 爱生气的书店老板
1052. 爱生气的书店老板难度中等200今天,书店老板有一家店打算试营业customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第i分钟生气,那么grumpy[i] = 1,否则grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续X分钟不生气,但却只能使...原创 2021-11-30 11:40:08 · 118 阅读 · 0 评论 -
Leetcode 1004 最大连续1的个数Ⅲ
给定一个由若干 0 和 1 组成的数组A,我们最多可以将K个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释:[1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。示例 2:输入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3输出:10解释:[0,0,1,...原创 2021-11-30 10:57:36 · 438 阅读 · 0 评论 -
Leetcode 424 替换后的最长重复字符
424. 替换后的最长重复字符难度中等516收藏分享切换为英文接收动态反馈给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。注意:字符串长度 和k不会超过104。示例 1:输入:s = "ABAB", k = 2输出:4解释:用两个'A'替换为两个'B',反之亦然。示例 2:输入:s = "AABABBA", k = 1输出:4解释:将中间的一个'A...原创 2021-11-29 14:43:03 · 91 阅读 · 0 评论 -
Leetcode 220 存在重复元素Ⅲ
220. 存在重复元素 III难度中等523收藏分享切换为英文接收动态反馈给你一个整数数组nums和两个整数k和t。请你判断是否存在两个不同下标i和j,使得abs(nums[i] - nums[j]) <= t,同时又满足abs(i - j) <= k。如果存在则返回true,不存在返回false。示例1:输入:nums = [1,2,3,1], k = 3, t = 0输出:true示例 2:输入:nums = [1,0,...原创 2021-11-29 14:36:59 · 4053 阅读 · 0 评论 -
Leetcode 187 重复的DNA序列
187. 重复的DNA序列难度中等303所有 DNA 都由一系列缩写为'A','C','G'和'T'的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串s中出现次数超过一次。示例 1:输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出:["AAAAACCCCC","CCCCCAAAAA"]...原创 2021-11-29 14:29:21 · 3682 阅读 · 0 评论 -
Leetcode 3 无重复元素的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"...原创 2021-11-29 14:14:51 · 74 阅读 · 0 评论 -
Leetcode 459 重复的子字符串
459. 重复的子字符串难度简单569给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两原创 2021-11-27 15:44:37 · 157 阅读 · 0 评论 -
Leetcode 521 最长特殊序列Ⅰ
521. 最长特殊序列 Ⅰ难度简单109收藏分享切换为英文接收动态反馈给你两个字符串,请你从这两个字符串中找出最长的特殊序列。「最长特殊序列」定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。示例 1:输入: "aba", "cdc"输出: 3解释: .原创 2021-11-27 09:38:47 · 85 阅读 · 0 评论 -
Leetcode 611 有效三角形的个数
611. 有效三角形的个数难度中等321收藏分享切换为英文接收动态反馈给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。 数组里整数的范围为 [0, 1000]。通过次数52,784提交次数99,114请问您在哪类招聘中遇到此题?题目分析我恨二分查找,下周就原创 2021-11-26 15:50:46 · 3333 阅读 · 0 评论 -
Leetcode 74 搜索二维矩阵
编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false提示:...原创 2021-11-26 14:45:55 · 83 阅读 · 0 评论 -
Leetcode 852 山脉数组的索引峰值
852. 山脉数组的峰顶索引难度简单221收藏分享切换为英文接收动态反馈符合下列属性的数组arr称为山脉数组:arr.length >= 3 存在i(0 < i< arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1] 给你由整数组成的山脉数组arr,返回任何满足...原创 2021-11-25 21:14:42 · 314 阅读 · 0 评论 -
Leetcode 367 有效的完全平方数
367. 有效的完全平方数难度简单323收藏分享切换为英文接收动态反馈给定一个正整数num,编写一个函数,如果num是一个完全平方数,则返回true,否则返回false。进阶:不要使用任何内置的库函数,如sqrt。示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false提示:1 <= num <= 2^31 - 1通过次数119,927提交次数267,897请问您在哪类招...原创 2021-11-25 20:53:21 · 164 阅读 · 0 评论 -
Leetcode 163 寻找峰值
162. 寻找峰值难度中等657收藏分享切换为英文接收动态反馈峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1] = nums[n] = -∞。你必须实现时间复杂度为O(log n)的算法来解决此问题。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例2:...原创 2021-11-25 20:44:58 · 583 阅读 · 0 评论 -
Leetcode 551 学生出勤记录Ⅰ
551. 学生出勤记录 I难度简单121给你一个字符串s表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:'A':Absent,缺勤 'L':Late,迟到 'P':Present,到场如果学生能够同时满足下面两个条件,则可以获得出勤奖励:按总出勤计,学生缺勤('A')严格少于两天。 学生不会存在连续3 天或连续3 天以上的迟到('L')记录。如果学生可以获得出勤奖励,返回true;否则,返回f...原创 2021-11-24 20:40:26 · 68 阅读 · 0 评论 -
Leetcode 33 搜索旋转排序数组
33. 搜索旋转排序数组难度中等1683收藏分享切换为英文接收动态反馈整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0 <= k < nums.length)上进行了旋转,使数组变为[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从 0 开始计数)。例如,[0,1,2,4,5,6,7]在下标3处经旋转后可能变...原创 2021-11-24 16:11:58 · 86 阅读 · 0 评论 -
Leetcode 293 翻转游戏
293. 翻转游戏难度简单31你和朋友玩一个叫做「翻转游戏」的游戏。游戏规则如下:给你一个字符串currentState,其中只含'+'和'-'。你和朋友轮流将连续的两个"++"反转成"--"。当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。计算并返回一次有效操作后,字符串currentState所有的可能状态,返回结果可以按任意顺序排列。如果不存在可能的有效操作,请返回一个空列表[]。示例 1:输入:currentState ...原创 2021-11-24 14:54:44 · 3093 阅读 · 0 评论 -
Leetcode 414 第三大的数
class Solution {public: const long long Min = -(1LL << 31); int thirdMax(vector<int> &nums) { long fi = Min, se = Min, th = Min; for (int i = 0; i < nums.size(); i++) { if (nums[i] > fi) { .原创 2021-11-24 10:09:56 · 386 阅读 · 0 评论 -
Leetcode 153 寻找旋转排序数组中的最小值
153. 寻找旋转排序数组中的最小值难度中等612收藏分享切换为英文接收动态反馈已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums = [0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,2] 若旋转7次,则可以得到[0,1,2,4,5,6,7]注意,数组[a[0], a[1], a[2], ..., a[n-1]]旋转一次的结果为数组[a[n-1], a[0],...原创 2021-11-24 10:04:24 · 76 阅读 · 0 评论 -
Leetcode 35 搜索插入位置
35. 搜索插入位置难度简单1187收藏分享切换为英文接收动态反馈给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], ...原创 2021-11-24 09:49:19 · 106 阅读 · 0 评论 -
Leetcode 278 二分查找
278. 第一个错误的版本难度简单484收藏分享切换为英文接收动态反馈你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中出错。实现一个函数来查找第一个错误的...原创 2021-11-24 09:31:45 · 78 阅读 · 0 评论 -
Leetcode 374 猜数字大小
猜数字游戏的规则如下:每轮游戏,我都会从1到n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == nu...原创 2021-11-24 09:14:28 · 83 阅读 · 0 评论 -
Leetcode 1833 雪糕的最大数量
1833. 雪糕的最大数量难度中等81收藏分享切换为英文接收动态反馈夏日炎炎,小男孩 Tony 想买一些雪糕消消暑。商店中新到n支雪糕,用长度为n的数组costs表示雪糕的定价,其中costs[i]表示第i支雪糕的现金价格。Tony 一共有coins现金可以用于消费,他想要买尽可能多的雪糕。给你价格数组costs和现金量coins,请你计算并返回 Tony 用coins现金能够买到的雪糕的最大数量。注意:Tony 可以按任意顺序购买雪糕。示...原创 2021-11-22 15:51:43 · 77 阅读 · 0 评论 -
Leetcode 搜索旋转排序数组Ⅱ
81. 搜索旋转排序数组 II难度中等513已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0 <= k < nums.length)上进行了旋转,使数组变为[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从 0 开始计数)。例如,[0,1,2,4,4,4,5,6,6,7]在下标5处经旋转后可...原创 2021-11-22 14:53:14 · 81 阅读 · 0 评论 -
Leetcode 540 有序数组中的单一元素
540. 有序数组中的单一元素难度中等288收藏分享切换为英文接收动态反馈给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums.length <= 105 0 <= nums[i]<= 105进阶:..原创 2021-11-22 14:14:45 · 1174 阅读 · 0 评论 -
Leetcode 169 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-elemen...原创 2021-11-22 14:57:03 · 75 阅读 · 0 评论 -
Leetcode 136 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目分析我.原创 2021-11-21 10:29:22 · 97 阅读 · 0 评论 -
Leetcode 594 最长和谐子序列
class Solution {public: int findLHS(vector<int>& nums) { sort(nums.begin(),nums.end()); int begin = 0; int res = 0; for (int end = 0; end < nums.size(); end++) { while (nums[end] - nums[begin] &...原创 2021-11-20 19:28:10 · 192 阅读 · 0 评论 -
Leetcode 58 最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = "Hello World"输出:5示例 2:输入:s = " fly me to the moon "输出:4示例 3:输入:s = "luffy is still joyboy"输出:6提示:1 <= s.length <= 104s 仅有英文字母和空格 '...原创 2021-11-19 14:52:56 · 265 阅读 · 0 评论 -
Leetcode 20 有效括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:true提示:1 &l...原创 2021-11-17 23:17:49 · 90 阅读 · 0 评论 -
Leetcode 739 每日温度
请根据每日 气温 列表 temperatures,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出:[1,1,1,0]示例 3:输入: temperatures = [30,60,90]输出: [1,1,0]...原创 2021-11-17 23:08:35 · 73 阅读 · 0 评论 -
Leetcode 769 最多能完成排序的块
数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [4,3,2,1,0]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。示例 2:输入: arr = [1,0,2原创 2021-11-17 18:25:09 · 69 阅读 · 0 评论