算法D2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理成今日当天的博客

 977.有序数组的平方 

题目建议: 本题关键在于理解双指针思想 

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

文章讲解:代码随想录

视频讲解: 双指针法经典题目 | LeetCode:977.有序数组的平方_哔哩哔哩_bilibili

这个题蛮直接的,逻辑就是双指针从两头开始计算,把平方最大的结果先放进结果。

Python版本:

C++版本:

产生一个固定长度的空vector,用 vector<int> vec(n); 精华在于,每次初始化一个变量,都把其中的数据类型说清楚。

209.长度最小的子数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。  拓展题目可以先不做。 

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

文章讲解:代码随想录

视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili

这个题目暴力解法是两层forloop,时间复杂度是

O(n^2)

,leetcode系统会判定超时。

这里滑动窗口的概念和以前接触的“滑动窗口”意义有一些不同,这里的滑动窗口长度是可变的,在满足某个条件以后,进行改变。把两层循环优化成一层循环的关键在于,仅当右指针之前的和大于目标值以后,再将左指针左移,且不会再回移左指针。

Python版本:

C++版本:

C++中 inf的表达,这里采用了INT_MAX, 即 整数的最大值; 对应int这个类型的inf。

 59.螺旋矩阵II

题目建议:  本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 

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

文章讲解:代码随想录

视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili

这个题比较直接,把方向搞清楚了就行,这里我写得和carl不一样,定义了四个方向,按条件判断是否换方向,然后顺序填入数字就完事。

Python版本:

C++版本:

和python版本区别不大,主要学了nested list如何表达(vector<vector<int>>), c++版本写成了forloop而不是while(python版),这个case没什么区别。

c++语法学习:

vector的构造函数有一种是:vector<数据类型> 变量名(n,elem) ,数组里包含是n个elem。内层容器装了n个0,外层容器装了n个内层容器,即n*n的数组,每个元素都是0。

总结 

题目建议:希望大家 也做一个自己 对数组专题的总结

文章链接:代码随想录

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值