自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 第十五天 2024.4.30

所以我们不能用层序遍历,这道题的破题思路为判断一个节点的左右子树是否对称,要想到递归的思路,定义一个方法判断一个节点的左右子树是否对称,每次有数种情况,对每种情况分别进行判断以及返回值,注意:每次判断我们需要外侧和外侧判断,内测和内测判断,因此在向下递归的过程中给需要判断左节点的左子树和右节点的右子树,以及左节点的右子树和右节点的左子树。不要被这个题目吓到,拿到二叉树的题目先考虑应该如何去遍历这个二叉树,这道题直接用前序遍历加递归就可以做出来。想到用后续遍历但不会写,对递归的条件判断不清楚。

2024-05-01 12:47:45 14

原创 leetcode 第十四天 2024.3.27

将遍历到的代码放入队列中,并记录此层所有的节点个数为size,然后一个一个弹出,弹出的同时将这个节点的左右子节点都加入到队列中,弹出一个节点size减一,直到size为0,这时这一层的所有节点都已经弹出,然后我们重新获取size,此时的size就是下一层的所有节点个数。和上一道题基本思路一致,不用把每个节点都加入结果数组中,只需要判断当前节点是不是本层中最后一个节点,是最后一个节点将其加入到返回数组,不是则跳过。在将节点的左右子节点放入队列时忘记判断当前节点左右子节点是否存在。

2024-03-30 06:42:26 128

原创 leetcode 第十三天 2024.3.26

3.确定单层递归的逻辑。基本的思路是我们创建一个栈stack,然后往里放数据,再弹出,对于前序遍历,我们把根节点放进stack后把它弹出,然后关键就来了,如何往下进行,因为是前序我们最后的顺序需要是中左右,所以我们再弹出根节点后需要把右子节点压入stack中,然后再把左子节点压入栈中,下一次pop出来的就是我们上一个根节点的左子节点,然后对这个左子节点的右子节点压入栈中再压入这个左子节点的左子节点,周而复始。这里的前中后序指的是中这个节点的位置,前就在左右前面,后就在左右后面,放在左右对应的位置上.

2024-03-27 00:18:01 609

原创 leetcode 第十二天 2024.3.25

没有小顶堆和大顶堆的应用概念,大小顶堆都是二叉树的变体,大顶堆每个节点都比其左右子节点大,小顶堆每个节点都比其左右子节点小。这道题让返回前K个最大的,注意我们需要使用小顶堆,因为顶堆中push操作后需要pop(pop出的都是根节点),使用小顶堆可以确保每次push后pop弹出的都是当前堆中最小的,所以剩下的就是前K个最大的。sorted 可以对各种可迭代的对象进行排序,支持自定义排序的键(key)和排序方向(升序或降序)。这样,原本较大的值会变成较小的值,因此在最小堆中的顶部会是原始值中的最大值的负数。

2024-03-26 09:03:21 186

原创 leetcode 第十一天 2024.3.22

所以需要自己去定义单调队列,自己定义队列中的pop,push,以及查询方法我命名为lo。在定义队列时候,问题的难点是,pop和push方法,有两点值得注意,首先,要想到我们每次加入新的元素时,我们需要将单调队列中前面所有比这个新元素小的数都pop出去,换句话说,当新元素X进入队列时,我们将队列中所有<小于X的数都移除,这样我们就可以保证我们的队列中第一个数永远都是最大值,这也方便了我们的查询方法,我们只需要返回队列第一个元素就可以了。如果想到的话很简单。可以用list实现,也可以用deque来实现。

2024-03-23 02:42:40 376

原创 leetcode 第十天 2024.3.21

直接用双端列表进行操作,偷懒了,创建一个双端列表:d = deque(),双端列表中的操作:从右侧(尾部)添加一个元素 d.append(), 从左侧(头部)添加一个元素 d.appendleft(),从右侧(尾部)删除一个元素 d.pop(),从左侧(头部)删除一个元素 d.popleft()最后如果栈是空的就返回true,如果还有就返回false.想不到用栈来解决,想用dictionary,发现很难解决前后顺序问题。对这种实现方法类的题目还是不熟练,有些陌生。

2024-03-22 01:49:35 402 1

原创 leetcode 第九天 2024.3.17

先定义一个局部翻转链表的方法,返回翻转后链表的头节点以及尾节点,再对原链表进行操作,先判断剩余的链表节点够不够K个,不够直接返回,够K个的话,先找到需要翻转的这一局部链表的尾节点,然后翻转这一局部链表,注意,再一次局部翻转后,我们需要将原先局部链表的头节点换到曾经的尾节点,作为第二次需要翻转链表的头节点,还需要用头节点往后走K个再找到第二次翻转链表的尾节点,.再操作。需要考虑清楚翻转后链表的首尾链接的问题,我们需要创建一个方法,对局部的链表翻转后返回首尾的节点,再对首尾节点单独操作,从而使得成功实现。

2024-03-19 02:05:37 223 1

原创 leetcode 第八天 2024.3.12

不会join,举例result = ', '.join(my_list),result 就是把my_list中的元素用“,”连接了起来,my_list = ['Hello', 'World'],result =Hello, World.要想到移除元素步仅仅可以移除==val的元素,还可以把!=val的元素往前移动,一样可以达到题目中的要求。今天上午期中考,正好这几道题简单,浅做一下,准备出去玩了,明天打算整复习前面做过的题。list[开始索引:结束索引:步长]难点:python中的切片操作。

2024-03-13 06:33:49 301 1

原创 leetcode 第七天 2024.3.11

对于left和right的去重,我们需要在left < right的情况下操作。用i遍历整个数组,i在每次循环中都会是固定的,left = i +1, right在数组最末尾,当nums[i] + nums[left] + nums[right] > 0时,right往左移动,使得三数之和变小,nums[i] + nums[left] + nums[right] < 0 时left往右移动,使得三数之和变大。在找到一组解的时候,也要记得left ++,right--,去找在当前i 下剩余的所有解。

2024-03-12 00:58:30 389 1

原创 leetcode 第六天 2024.3.10

主要是考虑清楚数组中可能会有重复数组的出现,一开始我想的是把所有数都放进dic里,然后再对list中每个数进行判断target-num 在不在dic里,在把所有数放进dic的过程中就要面临可能会有数字一样的情况,dic【num】会被篡改,所以我们可以在遍历数组的时候直接进行target-num的操作,然后看这个target-num在不在dic里面,如果在直接返回即可。值得注意的是,和上一道题一样,也是在对34数组进行操作的同时就可以判断0-sum34在不在dic12里面了,很方便的技巧。

2024-03-11 22:24:25 356 1

原创 leetcode 第五天 2024.3.9

例如,链表A为0 1 2 3 4 5 6, B为 a b 4 c d, 链表A,B同时遍历,B先到尾部d,让B从A的开头0继续遍历,当A到A的6时候,这是B此时在A的1,A接着B的开头a继续遍历,然后就是 A-a, B-2 A-B, B-3 A-4, B-4找到了交点。这样AB的总长度就一样了,遍历既可以找到交点。= curb,然后里面if用的cura,而不用cura.next,因为当cura在链表尾部是,它自己已经是none了,用cura.next遍历不到none,从而会一致循环。

2024-03-10 08:55:35 787 1

原创 leetcode 第四天 2024.3.8

在定义实例方法时第一个参数通常定义为self,这样可以实现,在这个类中其他方法调用另一个属性或者方法是用self.就可以了. 注意,在本道题中,我们在添加或者删除某个特定节点的时候,比如说我们要删除 index=x 的节点或者在其前面添加一个新节点,我们要找的是x节点前一个节点y,然后把y.next 变成y.next.next 实现删除x,y.next = newnode实现添加。但可能找倒数N会困扰,看思路详解但,,,,无论何时都要记住对一个特定节点进行操作的时候,应用条件:链表逻辑,双指针。

2024-03-09 10:42:24 586 1

原创 leetcode 第三天 2024.3.7

看到题的时候也想到了大致一样的方法,但是在想具体实现思路的时候卡壳,想完第一圈的填充后不知道第二圈怎么填充了,其实是没有想到可以找一对(startx,starty)来代表每一圈填充的起始位置,每次填充完一圈后更新(startx,starty),同时(startx,starty)在填充过程中也帮助我们遍历所填充行/列的起始和终止位置,其次就是看到这道题怕了,觉得写不出来,没有动手去一步一步认真分析,也没有尝试去找到一定规律,下次遇到循环次数多的题,往循环不变量上去想或许可以帮助.应用条件:循环不变量。

2024-03-08 13:16:09 707 1

原创 leetcode 第二天 2024.3.6

2.同时,在寻找最小长度时,当while条件不满足时,上一次循环已经将start += 1 了,在这次循环开始,end也 + 1 所以并不会出现问题,做题时候想不明白这个逻辑,导致对初始summ应该写在哪混淆,初始summ就定义在end循环开始前,虽然后面end增加后可能summ不为零,start也不为零,但并不影响,在内置while中summ小于target时,end会再增加,summ会在原来的基础上加nums中end这个数,直到summ再次大于target时,再对start进行操作判断.

2024-03-07 09:33:19 990 1

原创 leetcode 第一天 2024.3.5

难点:想不到双指针个人错误:不会在不知道具体数的时候创建长度固定为n的数组,用 list = [float('inf')] * n 创建,

2024-03-06 12:08:04 360 1

空空如也

空空如也

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

TA关注的人

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