代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵

977. 有序数组的平方

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

这道题也是之前看过的,也有思路,迅速解决,没有什么太大问题。

209. 长度最小的子数组

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

相比之下,这个题目就没有什么思路了,我一开始想的是先找到最大的那个数字然后左右滑动,但也没有想明白边界怎么办以及左右移动的条件是什么。

滑动窗口(满脑子都是计网)是指首先先找到一个满足的子队列,然后再将其缩小到不满足条件,当发现不满足条件的时候再向后扩大,直到窗口整体上达到了向右移动的趋势。

整个过程中,这个窗口两边如何移动是比较关键的点,要进行理解。

对答案的时候还发现了几个小问题:

1. 可以给minLen赋值Interger.MAX_VALUE;

2. 库函数Math.min不了解;

3. 我用了一个flag变量来看有没有满足要求的,其实可以通过对比result是否赋值了来查看。

59. 螺旋矩阵

题目链接:https://leetcode.cn/problems/spiral-matrix-ii/description/

很经典的题,学校做oj也做过几次了,主要是边界处理。

写的已经比较熟练了,就是每次在对目标边进行处理的时候,要注意那个边长是相对值,而不是坐标的绝对值,进行for循环时,需要进行一个对长度的处理。

心得:

第一题和第三题会,中间的滑动窗口忘记了。对于双指针,感觉应该进行一个题型整理。

看了几篇博客,有提到双指针就是减少一次暴力for循环,所以对数组需要重复遍历的时候就要使用这种方法。

我感觉977题还是比较直观的,因为带复数平方后自然是头尾大,这个属于对向的指针,而昨天的题目是快慢指针的应用,是同向的。滑动窗口本质上也是双指针,主要是思考如何能更快的遍历(该题中有子数组的出现,要求了连续)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值