复习Day01-03

三天了回顾一下前面的。

发现第一天漏了两题(。)
704. 二分查找
注意考虑只有一个元素的情况。

mid = left + (right - left) //2
如果确定right + left不会越界的话,其实直接right + left // 2 更快。

//是向下取整。
209. 长度最小的子数组

nums is None 和 len(nums) == 0是两个不同的条件。None是一个特殊值。len(nums)==0才是空。
(看了一下,其实不加这一句也差别不大,也很快处理完的。)

突然好奇暴力怎么写所以也看了一下。(哈哈怪不得当时没看暴力,找不到正确答案,因为题目应该是改过了。)

无论是暴力法还是滑动窗口,都是要不断比较min_len找最优值的。

有点质疑为什么时间复杂度不是O(n^2)了,也可能会是target = 10, nums = [1,1,1,1,1,1,1,1,1,1]这种情况吧。回家问一下。

看回了滑动窗口方法,题目大于等于,上次写只看到等于,这次写只写了大于,我真是个人才啊!
(其他没什么大问题了)

59. 螺旋矩阵 II

需要注意的是两个点。

1. 初始化二维函数:
nums = [[0]*n for _ in range(n)]

2. range(x,y, -1),怀疑之前的理解有误。
回去问问,为什么:
for i in range(n-offset,startx,-1)
而不是
for i in range(startx,n-offset)

其他都写对了。

203. 移除链表元素

1. 虚拟头结点写法:dummy_head = ListNode(next = head)
概念理解了,不会写语法可不行。

2. "if cur.next.val == val" 经常漏掉第一个val。记得cur.next只是指针,再.val才能读值。

206. 反转链表

双指针:今天写了今天还不会hhhh

问题出在把while(cur!=None)写成了while cur.next。
显示'NoneType' object has no attribute 'next'。

要注意每次判断时已经反转了cur节点了。
直接写while cur也是可以的。

(晚上问问为什么不能写

class Solution:

    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:

        cur = head

        pre = None

        while temp := cur.next:

            cur.next = pre

            pre = cur

            cur = temp

        return pre

)

递归:居然一次写对了!

之后复习可以首要总结:看到这道题想到是什么思路。

这才是最帮助做题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值