建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理成今日当天的博客
977.有序数组的平方
题目建议: 本题关键在于理解双指针思想
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文章讲解:代码随想录
这个题蛮直接的,逻辑就是双指针从两头开始计算,把平方最大的结果先放进结果。
Python版本:
C++版本:
产生一个固定长度的空vector,用 vector<int> vec(n); 精华在于,每次初始化一个变量,都把其中的数据类型说清楚。
209.长度最小的子数组
题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文章讲解:代码随想录
这个题目暴力解法是两层forloop,时间复杂度是
,leetcode系统会判定超时。
这里滑动窗口的概念和以前接触的“滑动窗口”意义有一些不同,这里的滑动窗口长度是可变的,在满足某个条件以后,进行改变。把两层循环优化成一层循环的关键在于,仅当右指针之前的和大于目标值以后,再将左指针左移,且不会再回移左指针。
Python版本:
C++版本:
C++中 inf的表达,这里采用了INT_MAX, 即 整数的最大值; 对应int这个类型的inf。
59.螺旋矩阵II
题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文章讲解:代码随想录
这个题比较直接,把方向搞清楚了就行,这里我写得和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。
总结
题目建议:希望大家 也做一个自己 对数组专题的总结
文章链接:代码随想录