自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 收藏
  • 关注

原创 LeetCode刷题---双指针---986

很简单,我都做好了大战三百回合的准备了,结果这就AC了?是一组实数,要么为空集,要么为闭区间。每个区间列表都是成对。

2025-03-29 10:01:24 377

原创 LeetCode刷题---双指针---524

很简单的一道题,就是代码有麻烦,一定要细心一点。返回字母序最小的字符串,我们首先可以把vector排序,然后进行遍历,保存长度最长且满足条件的字符串即可。如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。中最长的字符串,该字符串可以通过删除。

2025-03-29 09:47:40 236

原创 LeetCode刷题---双指针---485

给定一个二进制数组nums, 计算其中最大连续1的个数。3开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.201。

2025-03-28 10:18:29 162

原创 LeetCode刷题---双指针---75

原地排序就是不开辟新的空间,在给出的数据空间进行排序。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。必须在不使用库内置的 sort 函数的情况下解决这个问题。第一次遇到12就往后找0的位置交换。第二次遇到2就往后找1的位置交换。给定一个包含红色、白色和蓝色、共。分别表示红色、白色和蓝色。

2025-03-28 09:59:29 115

原创 LeetCode刷题---双指针---56

我们首先将这个容器进行排序,然后对每一个数组进行操作就可以了。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

2025-03-03 16:59:03 259

原创 LeetCode刷题---双指针---532

思路很简单,当k=0的时候,就统计数组中相同元素的个数就可以了。当k≠0时,我们可以想把数组存储到一个set中,这样保证了顺序也去除了相同的元素,然后利用双指针就可以解决问题了。数组中有四个 1-diff 数对, (1, 2), (2, 3), (3, 4) 和 (4, 5)。数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个 1 ,但我们只应返回不同的数对的数量。数组中只有一个 0-diff 数对,(1, 1)。k-diff 数对,并返回不同的。

2025-02-27 21:37:17 393

原创 LeetCode刷题---双指针---925

如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回。'e' 一定需要被键入两次,但在 typed 的输出中不是这样。'alex' 中的 'a' 和 'e' 被长按。直接看代码注释吧,很简单的。你的朋友正在使用键盘输入他的名字。,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符。

2025-02-27 16:15:38 249

原创 LeetCode刷题---栈---84

自己没做出来,看的别人的题解,用的单调栈!后面会专门弄一个专题,介绍这个,这里就不细说了。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。最大的矩形为图中红色区域,面积为 10。

2025-02-27 16:02:42 298

原创 LeetCode刷题---栈---1209

维护一个存储pair的栈,第一维是字符串的元素,第二维是连续出现的次数,然后遍历整个字符串即可,如果出现的次数满足,就出栈,不满足就自增,直到遍历完整个数组。个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。先删除 "eee" 和 "ccc",得到 "ddbbbdaa"重复进行无限次这样的删除操作,直到无法继续为止。在执行完所有删除操作后,返回最终得到的字符串。再删除 "bbb",得到 "dddaa"最后删除 "ddd",得到 "aa"倍重复项删除操作」将会从。

2025-02-26 22:38:46 225

原创 LeetCode刷题---栈---1190

思路很简单,就是在没遇到 )的时候,一直将字符入栈,碰到 ) 的时候,将元素出栈,存储起来,直到在栈中遇到 ( ,然后将存储的元素反向入栈即可,直到遍历完字符串中的所有元素。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。先反转子字符串 "oc" ,接着反转 "etco" ,然后反转整个字符串。先反转子字符串 "love" ,然后反转整个字符串。(仅含有小写英文字母和括号)。

2025-02-26 20:35:09 256

原创 LeetCode刷题---栈---1003

我们遍历字符串,将字符串一个一个入栈,如果不是 'c' 的话,就直接入栈,如果是 'c' 就判断一下此时栈顶是不是 'b' ,如果不是直接返回false,如果是将 'b' 出栈,然后判断栈顶元素是不是 'a',如果不是直接返回false。最后判断栈中是否还有元素,如果还有就返回false,如果没有就返回true。因此,"abcabcababcc" 有效。执行操作无法得到 "abccba"。需要满足:假设开始有一个空字符串。因此,"aabcbc" 有效。

2025-02-26 18:47:49 316

原创 LeetCode刷题---栈---946

就是把pushed按照popped的方式进行入栈,如果popped的元素不在栈中,那么就将pushed所找元素之前的全部压入栈中,如果在栈中,那就观察栈顶元素是不是所找的元素,如果不是就返回false。,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回。两个序列,每个序列中的。1 不能在 2 之前弹出。

2025-02-26 18:12:13 231

原创 LeetCode刷题---栈---921

我只能说这道题最恶心的地方就是题目很难读懂,其实读懂了就很简单,直接用栈就轻松解决。,在每一次操作中,你都可以在字符串的任何位置插入一个括号。有效而必须添加的最少括号数。

2025-02-26 17:19:08 161

原创 LeetCode刷题---栈---739

遍历整个数组,将整个数组压入栈中,找到符合条件的元素,出栈即可。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。

2025-02-25 19:15:23 270

原创 LeetCode刷题---栈---636

函数 0(初始调用)在时间戳 7 的起始恢复执行,执行 1 个单位时间,于时间戳 7 的末尾结束执行。函数 0 在时间戳 0 的起始开始执行,执行 2 个单位时间,于时间戳 1 的末尾结束执行。函数 1 在时间戳 2 的起始开始执行,执行 4 个单位时间,于时间戳 5 的末尾结束执行。函数 1在时间戳 6 的起始开始执行,执行 1 个单位时间,于时间戳 6 的末尾结束执行。函数 0 在时间戳 0 的起始开始执行,执行 2 个单位时间,并递归调用它自身。函数 0(初始调用)恢复执行,并立刻再次调用它自身。

2025-02-25 16:30:48 885

原创 LeetCode刷题---栈---394

我的思路是和一个括号匹配的题一样,不管是数字,字母还是 [ ,全部入栈,直到碰到 ] 之后,将栈中元素依次出栈,一直到碰到 [ 为止停止出栈,然后观察此时栈顶的数字(也要出栈),将出栈的元素根据栈顶的数字进行复制几遍,然后再重新压入栈中,依次循环,直到结束!输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。我可算体会到栈这个地方的恶心了,全是边界条件啊啊!此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。给定一个经过编码的字符串,返回它解码后的字符串。,表示其中方括号内部的。

2025-02-25 15:22:52 278

原创 LeetCode刷题---栈---1047

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。easy题没什么好说的,直接用栈就随随便便解决啦。在完成所有重复项删除操作后返回最终的字符串。上反复执行重复项删除操作,直到无法继续删除。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。

2025-02-24 22:20:52 265

原创 LeetCode刷题---栈---844

直接遍历字符串,将字符串的有效字符存储到栈中,然后对比一下两个栈就可以了。两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回。s 会变成 "c",但 t 仍然是 "b"。如果对空文本输入退格字符,文本继续为空。s 和 t 都会变成 "ac"。s 和 t 都会变成 ""。

2025-02-24 21:41:25 155

原创 LeetCode刷题---栈---682

"+" - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]"+" - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]"D" - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]"9" - 记录加 9 ,记录现在是 [5, -2, -4, 9]"4" - 记录加 4 ,记录现在是 [5, -2, 4]"-2" - 记录加 -2 ,记录现在是 [5, -2]"2" - 记录加 2 ,记录现在是 [5, 2]

2025-02-24 20:51:05 756

原创 LeetCode刷题---栈---225

直接用一个队列来实现,就是在入队列的时候,保留新入队的元素,其他的元素重新进行入队列,这样就可以保证队列中的元素和栈的存储方式是一样的。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(myStack.empty();// 返回 False。

2025-02-24 16:58:39 315

原创 LeetCode刷题---栈---155

设计两个栈,一个栈用来存储数据,另一个栈用来维护最小的数据,这样就可以实现O(1)的时间复杂度来获取最小的元素。--> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。

2025-02-24 16:14:31 265

原创 LeetCode刷题---二分查找---792

我的思路是用一个哈希表存储一个存储每一个字母以及字符在S中出现的位置(一个列表)。然后将words存储到一个哈希表中,因为可能重复,然后对这个哈希表进行判断进行探索,得到最终的结果。是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改变其余字符的相对顺序。有三个是 s 的子序列的单词: "a", "acd", "ace"。

2025-02-24 12:46:43 277

原创 LeetCode刷题---二分查找---454

给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:1直接上哈希表,将前两个的数组的和存储的哈希表中,然后有两个数组的和的相反数存储到哈希表中,这样就可以对比出结果了。

2025-02-23 22:16:34 390

原创 LeetCode刷题---二分查找---287

这个题我实在是没做出来,看的别人的。),可知至少存在一个重复的整数。你设计的解决方案必须。

2025-02-22 17:25:20 208

原创 LeetCode刷题---二分查找---162

1.若nums[mid] < nums[mid + 1] 则mid ~ n 一定有峰值。2.若nums[mid] > nums[mid + 1] 则0 ~ mid 一定有峰值。对于所有有效的 i 都有 nums[i]!= nums[i + 1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。或者返回索引 5, 其峰值元素为 6。3 是峰值元素,你的函数应该返回其索引 2。你的函数可以返回索引 1,其峰值元素为 2;峰值元素是指其值严格大于左右相邻值的元素。的算法来解决此问题。

2025-02-22 17:03:18 280

原创 LeetCode刷题---二分查找---153

也是利用二分查找,就是判断中间的元素的大小情况,如果中间的元素比两边的元素都要小,那么就让右边界左移,如果中间的元素比两边的元素都要大,那么就让左边界右移,如果不满足上述两种情况的话,说明这个数组一定是排好序的。,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。的数组,预先按照升序排列,经由。

2025-02-22 16:34:49 349

原创 LeetCode刷题---二分查找---34

我的思路是利用二分查找,找到小于target的最大元素,然后根据这个位置再进行遍历就行了。请你找出给定目标值在数组中的开始位置和结束位置。给你一个按照非递减顺序排列的整数数组。你必须设计并实现时间复杂度为。如果数组中不存在目标值。

2025-02-22 15:31:19 270

原创 LeetCode刷题---二分查找---744

letters 中没有一个字符在字典上大于 'z',所以我们返回 letters[0]。letters 中字典顺序上大于 'c' 的最小字符是 'f'。letters 中字典上比 'a' 大的最小字符是 'c'。直接看代码吧,有注释的,有点混乱我现在。如果不存在这样的字符,则返回。

2025-02-22 13:40:10 248

原创 LeetCode刷题---二分查找---704

如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。

2025-02-22 13:10:41 172

原创 LeetCode刷题---二分查找---441

枚硬币,并计划将它们按阶梯状排列。我只能说直接解方程组!因为第三行不完整,所以返回 2。因为第四行不完整,所以返回 3。

2025-02-21 22:32:00 246

原创 LeetCode刷题---二分查找---392

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。不需要二分,直接遍历数组即可,很简单!添加此问题并且创建所有测试用例。

2025-02-21 16:32:36 127

原创 LeetCode刷题---二分查找---374

如果你猜错了,我会告诉你,我选出的数字比你猜测的数字大了还是小了。请你猜选出的是哪个数字。经典的二分,直接上代码!我们正在玩猜数字游戏。你可以通过调用一个预先定义好的接口。

2025-02-21 16:20:02 227

原创 LeetCode刷题---二分查找---367

返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。返回 true ,因为 4 * 4 = 16 且 4 是一个整数。不能使用任何内置的库函数,如。是一个完全平方数,则返回。

2025-02-21 16:11:22 284

原创 LeetCode刷题---二分查找---350

请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。这道题感觉用哈希表更好一些,存储两个哈希表,直接查找就好啦。

2025-02-21 14:58:38 278

原创 LeetCode刷题---二分查找---278

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。,你想找出导致之后所有版本出错的第一个错误的版本。

2025-02-21 12:44:38 213

原创 LeetCode刷题---二分查找---167

1 与 0 之和等于目标数 -1。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 4 之和等于目标数 6。因此 index1 = 1, index2 = 3。返回 [1, 3]。双指针秒了~~~没什么好说的,直接上代码。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。的形式返回这两个整数的下标。

2025-02-21 10:44:58 349

原创 LeetCode刷题---二分查找---69

8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。经典的二分查找的题目,思路很简单,就是要注意乘法防止溢出。不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。

2025-02-21 10:13:11 144

原创 LeetCode刷题---哈希表---697

"the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,"i" 和 "love" 为出现次数最多的两个单词,均为2次。注意,按字母顺序 "i" 在 "love" 之前。2. 逆向遍历table,将元素存储到standard中。出现次数依次为 4, 3, 2 和 1 次。3. 逆向遍历standard,输出k个就可以了。个出现次数最多的单词。

2025-02-20 22:28:38 418

原创 LeetCode刷题---哈希表---648

我们用set来存储dictionary中的所有的词根,这样可以保证有顺序,然后遍历这个句子,将含有词根的单词返回词根,否则返回该单词就可以了。添加其他一些词组成另一个较长的单词——我们称这个词为。和一个用空格分隔单词形成的句子。(root) 的概念,可以词根。在英语中,我们有一个叫做。你需要输出替换之后的句子。你需要将句子中的所有。现在,给定一个由许多。

2025-02-20 22:17:03 282

原创 LeetCode刷题---哈希表---451

给定一个字符串s,根据字符出现的对其进行。一个字符出现的是它出现在字符串中的次数。返回已排序的字符串。如果有多个答案,返回其中任何一个。s = "tree""eert"'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。"cccaaa"'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。

2025-02-19 20:48:06 349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除