自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 热题100-51 岛屿数量

思路是从左上开始[0][0],然后进行遍历,像是裂变一样周围只要是‘1’就吃掉并且重新赋值(代码还有可以优化的地方,比如dfs向四周扩散的时候可以先判断当前这个是‘1’再执行,我这个是先执行后进去判断了..)岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。第一次勇于尝试深搜啊!

2024-09-06 16:19:47 237

原创 LeetCode 热题100-20 旋转图像

旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。使用另一个矩阵来旋转图像。

2024-09-06 15:28:03 298

原创 LeetCode 热题100-35 LRU 缓存

/ 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}lRUCache.put(4, 4);// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}lRUCache.put(2, 2);// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);// 缓存是 {1=1}lRUCache.get(1);请你设计并实现一个满足。结果写的又臭又长...用了。

2024-09-05 21:07:20 372

原创 LeetCode 热题100-32 随机链表的复制

另外就是还学了个python知识,字典的get()方法,例如我写的两个判断句子是可以不写的,可以直接 = hashmap.get(...),(get方法默认找不到返回None)指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。个节点组成的链表来表示输入/输出中的链表。的链表,每个节点包含一个额外增加的随机指针。,该指针可以指向链表中的任何节点或空节点。那么在复制链表中对应的两个节点。返回复制链表的头节点。

2024-09-05 18:07:35 323

原创 LeetCode 热题100-11 滑动窗口的最大值

的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。然后还写了一下窗口未生成和已经生成的版本!滑动窗口每次只向右移动一位。

2024-09-04 20:05:55 249

原创 LeetCode 热题100-64 搜索二维矩阵

这个是简单的二维矩阵搜索,因为这个可以看成是把一个列表折成了几段,然后这样放在一起了,所以直接二分查找就好了。只不过是要用变量变通一下即可,核心还是二分查找的代码。给你一个满足下述两条属性的。

2024-09-04 17:07:37 454

原创 LeetCode 热题100-72 每日温度

天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。

2024-09-04 16:49:18 355

原创 LeetCode 热题100-70 最小栈

-> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。

2024-09-04 15:18:17 334

原创 LeetCode 热题100-17 缺失的第一个正数

可惜捏,只能想到用hashmap做个o(n)额外空间的做...(开辟空间了但是速度快hhh。想不到O n 1 的做法,看看大佬的做法吧,原地数组,将元素交换至(元素-1)下标的位置。随后从头往后寻找对应不起来的位置,然后返回就好了。,请你找出其中没有出现的最小的正整数。范围 [1,2] 中的数字都在数组中。1 在数组中,但 2 没有。给你一个未排序的整数数组。最小的正数 1 没有出现。

2024-09-04 14:10:53 312

原创 LeetCode 热题100-16 除自身以外数组的乘积

emm...这个题目倒是用时间O(N)做出来了,但是空间复杂度没想到O(1),算是一般的方式(计算前缀乘积和后缀乘积,这样的话空间就是O(N)看了一下题解,发现可以最后直接用resList存放一下前缀乘积啊!然后这样的话用一个变量一直边遍历边累乘过来就好了。的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组。之中任意元素的全部前缀元素和后缀的乘积都在。之外其余各元素的乘积。时间复杂度内完成此题。

2024-09-01 10:54:57 299

原创 LeetCode 热题100-14 合并区间

合并区间,这道题目当时想了很多情况,比如这个区间是无序的,那么后续可能会有重新修改区间的可能性等等,所以思路是先对大列表排序一下(将里面的小列表排序,按照第一个元素默认排序,相同再按第二个)这样就能保证每次排完以后不会再对列表进行修改了。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

2024-09-01 10:08:09 254

原创 ​LeetCode 热题100-13 最大子数组和​

看别的大佬是这样写的,个人理解 :这个buff应该是指的增益,因为如果前面有一个负数,肯定是能抛弃尽量抛弃,所以这个buff更多的是记录前面部分是否需要加上(相对于当前考察的元素来讲),如果buff是大于0的,说明前面的部分可以连上(因为会带来更高的和),如果buff

2024-08-31 10:58:52 296

原创 LeetCode 热题100-9 找到字符串中所有字母异位词

一开始自己想的是用hashmap来做,但是这样肯定会超时的(就暴力了...起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。的子串,返回这些子串的起始索引。指由相同字母重排列形成的字符串(包括相同的字符串)。

2024-08-31 09:52:57 310

原创 LeetCode 热题100-63 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。磕磕巴巴...以后每天一写!请必须使用时间复杂度为。

2024-08-29 14:47:16 363

原创 LeetCode 热题100-41 二叉树的层序遍历

这道题目是层序遍历,应该不难想就是要用队列,将root压入(不空),如果有左孩子压入左孩子,有右孩子压入右孩子,一开始错的原因是不知道怎么样才能分层放到一个列表中,后来看了看k神的题解,发现其实就是在每一层操作的时候记录一下当前队列的长度就好了,然后写个循环放到一个小列表中。(即逐层地,从左到右访问所有节点)。

2024-08-29 13:53:23 305

原创 LeetCode 热题100-39 对称二叉树

就是对称着去判断,代码可能看着长而繁...(越来越觉得内置函数好用了...用了递归,对于树的题目能用递归则用递归...qwq。你可以运用递归和迭代两种方法解决这个问题吗?给你一个二叉树的根节点。, 检查它是否轴对称。

2024-08-28 20:56:45 252

原创 LeetCode 热题100-38 翻转二叉树

感觉还是函数内的内置函数清晰一点,直接的递归感觉容易钻牛角尖...but还是写写吧。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。

2024-08-28 20:28:39 278

原创 LeetCode 热题100-37 二叉树的最大深度

然后看了看k神的题解,发现考虑是否有左右孩子节点的那个if没有必要...是指从根节点到最远叶子节点的最长路径上的节点数。以前本科数据结构做过,感觉递归还是巧妙啊。而且也不需要再内置一个函数了。

2024-08-28 18:03:17 254

原创 LeetCode 热题100-36 二叉树的中序遍历

——————————————————————————————————————————之后再来写进阶...然后看着很多人用的函数中又定义函数的方式写的,思路是有的,但是一到递归就不知道代码咋写。递归算法很简单,你可以通过迭代算法完成吗?直接用的递归的方式,中序遍历就是左根右。然后我就又自己写了个类里的函数方式。给定一个二叉树的根节点。

2024-08-28 17:41:05 303 2

原创 LeetCode 热题100-8 无重复字符的最长子串

这道题目先想到的是逐个循环呗...最后发现竟然没有超时,应该是测试样例卡的不严,要不然肯定会超了... 时间复杂度也是来到了o(n²)最重要的其实是左指针和res的赋值部分,用max函数,特别是left,用max函数防止left左移动,保证left要一直往右移动。用滑动窗口其实就是跳越左边的边界,让左边的边界跳到合适的地方,而这个合适的地方其实就是与他重复的元素的索引位置。那这道题目应该是要用滑动窗口来做,但是之前不太懂,今天学一下。因为无重复字符的最长子串是。因为无重复字符的最长子串是。

2024-08-28 11:32:02 299

原创 LeetCode 热题100-10 和为 K 的子数组

这道题目首先想到的是暴力,从左边开始遍历i,然后再用个指针从i+1遍历->len(nums),这样的话应该o(n²), 可惜python通过不了(貌似java可以...用hash表来优化一下,hash表存的也是前缀和,但是可以一边计算前缀和一边存hash。找pre_sum-k,如果有则res+=hashmap[pre_sum-k]子数组是数组中元素的连续非空序列。所以只好学点新东西吧。

2024-08-28 00:22:44 223

原创 LeetCode 热题100-69 有效的括号

今天写了一道比较简单的,就是栈的思想,开口朝右的压栈,匹配到开口朝左的字符就和栈顶匹配一下,成功就继续,否则return False,最后看看栈里空不空(如果不空说明栈里还有其他没有匹配的开口朝右的字符),判断字符串是否有效。

2024-08-24 13:32:26 276

原创 LeetCode 热题100-31 K 个一组翻转链表

是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。思路也比较简单(脑袋想不出什么简单便捷的方式 qwq。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。额外内存空间的算法解决此问题吗?,也是照着进阶的方向写的;

2024-08-23 13:28:03 274

原创 LeetCode 热题100-97 多数元素

摩尔投票 的方法 用一个vote来标志当前考察元素的票数,然后如果一样的话则vote+1,否则-1.这样当vote=-1的时候说明考察元素需要更换了,以此类推下去即可找到最多的那个多数元素。这个题目最先想到的是hashmap,直接遍历统计就好,然后找出来,但是这样时间复杂是o(n),空间复杂也是o(n);然后看了看k大佬的解析,发现其实还能用数组排序来做,数组中间的数一定是最后的多数元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。另外进阶的方法应该是。

2024-08-22 11:44:41 270

原创 LeetCode 热题100-96 只出现一次的数字

看了一下其他大佬的解法,就是利用异或的知识来做,a^a = 0, a^0 = a,另外异或还支持交换律,例如 a ^ b ^ a = (a ^ a)^ b = 0 ^ b = b。这道题目是技巧题,要求时间复杂o(n),空间复杂o(1),感觉想不出来特殊解法的话基本都是o(n)空间复杂度,没有接触过异或解题的我只能想出来o(n)...qwq。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

2024-08-22 11:07:15 234

原创 LeetCode 热题100-30 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。这道题目用的迭代的方式,就是两两操作next指针,注意的地方就是小心节点丢失造成的死循环。看到有人用的递归的方法,但是害怕递归...qwq。两两交换链表中的节点。

2024-08-22 10:24:45 193

原创 LeetCode 热题100-15 轮转数组

直接奔着进阶的o(1)与原地要求去了,思路是直接从第一个元素a入手,找到其应该去的下个位置next_idx,存储一下这个位置的元素b,执行nums[next_idx]=a,接着拿着b重复这个过程,这样遍历该数组一遍即可,使用o(1)的空间复杂度。容易想到的是空间复杂度o(n)的方法,就是开辟一个数组空间,然后直接把每个元素最终位置填进去,最后比着再赋值回来。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。

2024-08-21 19:33:12 190

原创 LeetCode 热题100-29 删除链表的倒数第n个节点

没想出来,但是知道这样的一遍的遍历应该是要用双指针那样做的,类似于追逐问题,用两个指针遍历,中间的距离是n,这样的话只需要遍历一次就好啦,q_p先走n步,然后q_p与s_p同时再走,此时。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?

2024-08-21 16:55:24 245

原创 LeetCode 热题100-18 矩阵置零

的,既然是所在元素的行和列置零,那么第一行和第一列自然能够成为具有存储功能的空间。其实也就是找到了m[i][j]后,将m[i][0]与m[0][j]都赋值为0就好了,然后最后再根据这两个信息来执行更新操作。的,这边用了两个hash表来存哪些行和列需要置零,然后从中取出来遍历着置为零即可。另外还想到一个想法是递归的方法,找到零的时候就往下执行下一行元素起始的递归,当前递归后再执行当前元素的行列置零操作。,则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。然后看了一下其他的解法是。

2024-08-19 14:29:06 266

原创 LeetCode 热题100-28 两数相加

这道题目就是采用的直接逐位相加,然后再进行一遍进位操作,其实这两步可以合成一步走,但是感觉这样写起来比较清晰,另外需要注意的就是深拷贝和浅拷贝的问题!python这个问题必须要注意啊,每次感觉逻辑比较清晰,但是到了链表这部分题目代码总是乱指(开辟新空间的时候,如果不初始化貌似总是指向一个位置,然后就死循环了,如果这里理解不到位欢迎大家指出(*^_______^*))你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。

2024-08-17 12:24:07 279

原创 LeetCode 热题100-27 合并两个有序链表

ps:这道题目写了很久的超时报错,其实是没注意深拷贝和浅拷贝的问题,一开始我就默认初始化res = a,结果发现一直超时,后来想了想这里一直都是在自我循环(a=a.next,一直都是自己循环自己了),所以后续就比较一下第一次的,以小的那个直接当头res来做,就能跳过这个了(其实也可以开辟空间弄个头节点就直接跳过这部分了)新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2024-08-17 10:41:02 311

原创 LeetCode 热题100-26 环形链表Ⅱ

的解法,即先用ab跑步套圈双指针判断环是否存在,然后在a与b相交的地方设置一个target,这个地方一定是在环内的,所以target.next为d的初始位置(逻辑上相当于在这个地方把环。受前面几道题目进阶写法的影响,这个题目可以拆解成是判断是否有环,以及交点在哪,于是就变成了。为了表示给定链表中的环,评测系统内部使用整数。开了),c的初始位置为head头,这样共走两路(热题22)找到交点即可。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。

2024-08-16 12:09:14 307

原创 LeetCode 热题100-25 环形链表

考虑进阶版,用o(1)的空间复杂度来解决,这个题目和之前的相交链表有着异曲同工之妙,那一道题目是找相交节点,两个人走一样的路程,最后相遇到的就是相交节点了;指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。(即,常量)内存解决此问题吗?,判断链表中是否有环。给你一个链表的头节点。

2024-08-16 11:38:48 404

原创 LeetCode 热题100-24 回文链表

那正好用刚才解决的逆序链表呗;逆序一半,然后分别从各自头开始比较,有不同就break,这样逆序一半的操作是。做回文链表,主要是无法直接像数组那样直接从中间去遍历,而看看进阶要求是。这样复杂度上是时间o(n),空间上o(1),正好满足。,请你判断该链表是否为回文链表。给你一个单链表的头节点。空间复杂度解决此题?

2024-08-16 11:02:46 252

原创 LeetCode 热题100-23 反转链表

链表反转,用的迭代方法,遍历过去更改一下next指针就好了(遍历一遍,o(n)时间复杂度),请你反转链表,并返回反转后的链表。

2024-08-16 10:10:53 197

原创 LeetCode 热题100-22 相交链表

相交链表给你两个单链表的头节点 和 ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 。图示两个链表在节点 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):评测系统将根据这些输入创建链式数据结构,并将两个头节点 和 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。 这道题是简单题应该是因为时间复杂卡的不严,因为最能

2024-08-15 23:01:27 394

原创 LeetCode 热题100-6 三数之和

这个题写的太复杂了...用了hash、集合...想法是先把数组排个序,随后用双指针从头开始遍历,然后去hash表中找target是否存在,去重的方式是用集合的方式天然去重(把元素先sorted然后tuple一下扔进集合,因为集合不支持hash列表 - - 字典当然也不支持),虽然做了一部分“剪枝”,但是代码速度也不快。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。

2024-08-15 19:12:45 367

原创 LeetCode 热题100-5 盛最多水的容器

这道题目没做出来...知道要用双指针,但是用的从一端开始循环的双指针遍历,顶多修剪一下第一个指针下一次跳跃的位置,但是依然逃不过超时(⊙﹏⊙)图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。类似那种金字塔式的三角,相当于考虑的方法的最差情况了...直接变成o(n2)所以只需要遍历到最中间,两指针相遇的时候看存的面积最大是多少就好了。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。

2024-08-15 10:53:39 249

原创 LeetCode 热题100-4 移动零

遍历一遍后,将按照相对位置填入所有非零元素,剩余的位置补0即可。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。你能尽量减少完成的操作次数吗?,编写一个函数将所有。

2024-08-14 16:46:54 240 1

原创 LeetCode 热题100-3 最长连续序列

而此时,又进入下一次循环了,2>3>4>5>6>7>8 =====>hashmap[2] = 7(连续次数),而此时这里是不需要的,因为1在2前面,2------>8的过程是多余的,就需要及时止损,而止损方式就是通过hashmap看看x-1是否存在,因为如果存在的话,不需要计算这遍循环了(如果x-1在前面遍历过了,那么已经算出来了;如果x-1在后面,那么后面会算到的!1->2>3>4>5>6>7>8 =====>hashmap[1] = 8(连续次数)例如, 1,2,3,4,5,6,7,8。

2024-08-14 14:33:25 176

空空如也

空空如也

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

TA关注的人

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