LeetCode学习之路
LeetCode成长之路,坚持每天一题
Fitz1318
安全运维工程师,加油!...
展开
-
LeetCode_1624_两个相同字符之间的最长子字符串
解释:最优的子字符串是 “abba” ,其他的非最优解包括 “bb” 和 “”。根据题意进行模拟,使用record数组记录每个字符最开始出现的下标。,计算长度时不含这两个字符。如果不存在这样的子字符串,返回。解释:s 中不存在出现出现两次的字符,所以返回 -1。解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。解释:最优的子字符串是 “bc”。是字符串中的一个连续字符序列。输入:s = “cabbac”输入:s = “cbzxy”输入:s = “abca”输入:s = “aa”原创 2022-09-17 12:51:35 · 260 阅读 · 0 评论 -
LeetCode_2289_使数组按非递减顺序排列
携程测开二面手撕代码题:给你一个下标从 0 开始的整数数组 nums。在一步操作中,移除所有满足 nums[i - 1] > nums[i] 的 nums[i] ,其中 0 < i < nums.length。重复执行步骤,直到 nums 变为 非递减 数组,返回所需执行的操作数。原创 2022-09-16 17:16:14 · 409 阅读 · 0 评论 -
LeetCode_543_二叉树的直径
假设我们知道对于该节点的左儿子向下遍历经过最多的节点数 L (即以左儿子为根的子树的深度) 和其右儿子向下遍历经过最多的节点数 R (即以右儿子为根的子树的深度),那么以该节点为起点的路径经过节点数的最大值即为 L+R+1。如图我们可以知道路径 [9, 4, 2, 5, 7, 8] 可以被看作以 2 为起点,从其左儿子向下遍历的路径 [2, 4, 9] 和从其右儿子向下遍历的路径 [2, 5, 7, 8] 拼接得到。返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。原创 2022-09-04 11:05:13 · 132 阅读 · 0 评论 -
LeetCode_674_最长连续递增序列
可以由两个下标 l 和 r(l < r)确定,如果对于每个 l原创 2022-08-31 19:52:13 · 127 阅读 · 0 评论 -
LeetCode_128_最长连续序列
x+y的连续序列,而我们却重新从x+1,x+2或者是x+y处开始尝试匹配,那么得到的结果肯定不会由于枚举x为起点的答案,因此我们在外层循环的时候碰到这种情况跳过即可。第一眼想到的是模拟法,就是枚举数组中的每个数x,考虑以其为起点,不断尝试匹配x+1,x+2,…那么以x为起点的最长连续序列为x,x+1,…由于我们要枚举的数x一定是在数组中不存在前驱数x-1的,不然按照上面的分析我们会从x-1开始尝试匹配。对于匹配的过程,可以使用哈希表存储数组中的数,这样查看一个数是否存在就能优化到O(1)的时间复杂度。...原创 2022-08-31 18:28:01 · 133 阅读 · 0 评论 -
从江湖武侠的角度来看并查集
话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的群落,通过两两之间的朋友关系串联起来。而不在同一个群落的人,无论如何都无法通过朋友关系连起来,于是就可以放心往死了打。但是两个原本互不相识的人,如何判断是否属于一个朋友圈呢?...转载 2022-08-31 17:58:51 · 199 阅读 · 0 评论 -
LeetCode_2391_收集垃圾的最少时间
给你一个下标从 0 开始的字符串数组 garbage ,其中 garbage[i] 表示第 i 个房子的垃圾集合。garbage[i] 只包含字符 ‘M’ ,‘P’ 和 ‘G’ ,但可能包含多个相同字符,每个字符分别表示一单位的金属、纸和玻璃。计算纸时首先就是判断每个字符串中是否包含G,如果有,那么就要去哪个房子,并花这个房子里纸数量*一分钟收拾。同时给你一个下标从 0 开始的整数数组 travel ,其中 travel[i] 是垃圾车从房子 i 行驶到房子 i + 1 需要的分钟数。...原创 2022-08-31 07:50:19 · 200 阅读 · 0 评论 -
LeetCode_2390_从字符串中移除星号
用栈来做,然后不是*那么就入栈,否则就让栈顶元素出栈。生成的输入保证总是可以执行题面中描述的操作。给你一个包含若干星号 * 的字符串 s。可以证明结果字符串是唯一的。原创 2022-08-30 18:38:47 · 383 阅读 · 0 评论 -
LeetCode_2389_和有限的最长子序列
首先将nums数组进行排序,然后遍历queries数组,对其中每一个数遍历其在nums中最多小于等于几个元素。是 nums 中 元素之和小于等于 queries[i] 的 子序列 的 最大 长度。是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。...原创 2022-08-30 18:19:19 · 398 阅读 · 0 评论 -
LeetCode_11_盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。这是思路最清晰的方法,就是计算所有可能性,然后得到最大面积,但是这种方式的复杂度为O(n^2),在LeetCode上面直接超时了。任何容器的面积都是使用较短的线作为长度,线之间的举例作为宽度来计算长方形的面积。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。,那么初始时宽度是最大的,下一步就是考虑移动左右窗口。返回容器可以储存的最大水量。...原创 2022-08-28 09:26:46 · 130 阅读 · 0 评论 -
LeetCode_5_最长回文子串
从每一个位置出发,向两边扩散即可。遇到不是回文的时候结束。因为最后要返回的是具体子串,因此还需要记录一下。每个位置向两边扩散都会出现一个窗口大小。,我们需要寻找从第一个。原创 2022-08-28 08:54:34 · 124 阅读 · 0 评论 -
LeetCode_266_回文排列
给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。如果原字符串长度为奇数,那么必有一个字符出现奇数次,其他字符出现偶数次。设置一个数组,统计每个字符出现的次数,然后遍历每个字符出现次数。如果原字符串长度为偶数,那么只要出现的字符其出现次数必须为偶数。...原创 2022-08-28 07:52:50 · 161 阅读 · 0 评论 -
LeetCode_148_排序链表
你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。原创 2022-08-26 08:36:05 · 171 阅读 · 0 评论 -
LeetCode_88_合并两个有序数组
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。因为nums1的空间都集中在后面,所以从后向前处理排序的数据会更好,节省空间,一边遍历一边将值填充进去。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。的算法解决此问题吗?...原创 2022-08-17 09:14:48 · 119 阅读 · 0 评论 -
LeetCode_7_整数反转
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。将数字转换成字符数组,然后进行反转,之后判断在不在范围内,需要注意末尾0和负号的处理方式。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。.同时也不会担心末位是0在翻转时出现错误。最终直接比较一下翻转后的数字在不在。假设环境不允许存储 64 位整数(有符号或无符号)。,因为无论是正数还是负数,按照上面不断的。同时考虑到负数,循环的终止条件是。...原创 2022-08-16 16:04:12 · 113 阅读 · 0 评论 -
LeetCode_2320_统计防止房子的方式数
现要求街道同一侧不能存在两所房子相邻的情况,请你计算并返回放置房屋的方式数目。由于答案可能很大,需要对。,街道的两侧各有 n 个地块。每一边的地块都按从 1 到 n 编号。每个地块上都可以放置一所房子。注意,如果一所房子放置在这条街某一侧上的第 i 个地块,不影响在另一侧的第 i 个地块放置房子。首先单独考虑一侧的房子,那么这题和打家劫舍就是一样的了。一条街道上共有 n * 2 个。表示前i个土地的放置方案数。...原创 2022-08-16 11:01:56 · 88 阅读 · 0 评论 -
LeetCode_2447_剑指Offer 10-Ⅰ.斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。需要注意一点的是在计算过程中就需要取模,不能只是对最终结果取模。...原创 2022-08-16 10:29:03 · 117 阅读 · 0 评论 -
LeetCode_2319_判断矩阵是否是一个X矩阵
如果一个正方形矩阵满足下述。判断一个矩阵是否满足是一个X矩阵原创 2022-08-16 10:06:37 · 168 阅读 · 0 评论 -
LeetCode_6_Z字形变换
以从上往下、从左到右进行 Z 字形排列。原创 2022-08-16 08:26:42 · 99 阅读 · 0 评论 -
LeetCode_1442_分割字符串的最大得分
请你计算并返回将该字符串分割成两个。子字符串)所能获得的最大得分。「分割字符串的得分」为。边计算得分,起始分割点为。原创 2022-08-14 16:07:15 · 117 阅读 · 0 评论 -
LeetCode_12_整数转罗马数字
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。将字符和数值对应上,然后对每个数来说从最大的字母开始看。字符 数值。...原创 2022-08-13 18:43:50 · 90 阅读 · 0 评论 -
LeetCode_13_罗马数字转整数
首先建立一个HashMap来映射符号和数值,然后对字符串从左到右进行遍历,如果当前字符代表的值不小于其右边,就加上该值。通常情况下,罗马数字中小的数字在大的数字的右边。的左边,所表示的数等于大数。字符 数值。...原创 2022-08-13 12:33:59 · 102 阅读 · 0 评论 -
LeetCode_2598_剑指Offer Ⅱ 091.粉刷房子
当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个。个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。请计算出粉刷完所有房子最少的花费成本。号房子粉刷成绿色的花费,以此类推。号房子粉刷成红色的成本花费;...原创 2022-08-10 11:33:00 · 107 阅读 · 0 评论 -
LeetCode_628_三个数的最大乘积
在数组中找出由三个数组成的最大乘积,并输出这个乘积。原创 2022-08-10 10:19:30 · 118 阅读 · 0 评论 -
LeetCode_152_乘积最大子数组
请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个。是数组的连续子序列。原创 2022-08-10 09:52:01 · 99 阅读 · 0 评论 -
LeetCode_443_压缩字符串
你必须设计并实现一个只使用常量额外空间的算法来解决此问题。需要注意的是,如果组长度为。数组中会被拆分为多个字符。,需要转储到字符数组。,返回该数组的新长度。原创 2022-08-10 08:25:48 · 175 阅读 · 0 评论 -
LeetCode_2632_字符串压缩
若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。原创 2022-08-09 20:07:00 · 129 阅读 · 0 评论 -
LeetCode_43_字符串相乘
的乘积,它们的乘积也表示为字符串形式。竖式运算思想,以123 * 456为例子。给定两个以字符串形式表示的非负整数。相乘,并将每一步的结果进行累加。库或直接将输入转换为整数。:不能使用任何内置的。...原创 2022-08-08 19:36:57 · 87 阅读 · 0 评论 -
LeetCode_2_两数相加
的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。之外,这两个数都不会以。原创 2022-08-08 18:40:41 · 91 阅读 · 0 评论 -
LeetCode_67_二进制求和
进行补齐,使得两个字符串长度一致,然后从末尾进行遍历计算,得到最终结果。:在计算时直接拼接字符串,会得到一个方向字符,最后再进行翻转。给你两个二进制字符串,返回它们的和(用二进制表示)。首先将两个字符串较短的用。...原创 2022-08-08 17:43:05 · 115 阅读 · 0 评论 -
LeetCode_66_加一
最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。之外,这个整数不会以零开头。原创 2022-08-08 09:26:46 · 128 阅读 · 0 评论 -
LeetCode_14_最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。原创 2022-08-08 08:41:36 · 101 阅读 · 0 评论 -
LeetCode_1004_最大连续1的个数Ⅲ
在最多可以翻转k个0的情况下寻找数组nums中连续1的最大个数,等价于寻找数组nums中的最多包含k个0的最长子数组的长度。,则返回 数组中连续 `1 的最大个数。原创 2022-08-08 08:04:18 · 128 阅读 · 0 评论 -
LeetCode_487_最大连续1的个数Ⅱ
在最多可以翻转一个0的情况下寻找数组nums中连续1的最大个数,等价于寻找数组nums中的最多包含1个0的最长子数组的长度。换句话说,内存不能存储下所有从流中输入的数字。您可以有效地解决吗?,如果最多可以翻转一个。:如果输入的数字是作为。...原创 2022-08-08 08:03:47 · 470 阅读 · 0 评论 -
LeetCode_485_最大连续1的个数
计算其中最大连续。原创 2022-08-07 23:02:47 · 156 阅读 · 0 评论 -
LeetCode_796_旋转字符串
如果在若干次旋转操作之后,最左边的字符移动到最右边。原创 2022-08-07 13:34:37 · 94 阅读 · 0 评论 -
LeetCode_6174_任务调度器Ⅱ
给你一个下标从 开始的正整数数组 ,表示需要 按顺序 完成的任务,其中 表示第件任务的 类型 。同时给你一个正整数 ,表示一个任务完成 后 ,另一个 相同 类型任务完成前需要间隔的 最少 天数。在所有任务完成前的每一天,你都必须进行以下两种操作中的一种:示例 1:示例 2:提示:...原创 2022-08-07 12:34:01 · 189 阅读 · 0 评论 -
LeetCode_6142_统计坏数对的数目
代码】LeetCode_6142_统计坏数对的数目。原创 2022-08-07 11:40:40 · 210 阅读 · 0 评论 -
LeetCode_6141_合并相似的物品
给你两个二维整数数组 和 ,表示两个物品集合。每个数组 有以下特质:注意: 应该按价值 升序 排序后返回。示例 1:示例 2:示例 3:提示:使用一个数组存储两个数组的值,然后一次放入list中,这样因为下标从小到大,所以不用排序...原创 2022-08-07 10:19:46 · 152 阅读 · 0 评论 -
LeetCode_54_螺旋矩阵
最后需要考虑如果Math.min(row,col)为奇数的话,需要单独给矩阵最中间的位置赋值。同时如果row > col,那么就是中间列,否则就是中间行。,返回矩阵中的所有元素。原创 2022-08-07 09:05:18 · 119 阅读 · 0 评论