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

 977.有序数组的平方 

题目链接:力扣

文章讲解:代码随想录

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

解法:暴力(nums.sort()即可) or 双指针思想的举一反三

数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。

考虑双指针法:i指向起始位置,j指向终止位置。

定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。

 

 209.长度最小的子数组

本题关键在于理解滑动窗口。

题目链接:力扣

文章讲解:代码随想录

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

首先可以使用暴力解:两个for loop,然后不断寻找符合条件的子序列,时间复杂度:O(n^2)。

滑动窗口:(精髓:起始位置)代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。_第1张图片

 

 59.螺旋矩阵II

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

题目链接:力扣

文章讲解:代码随想录

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

易错:必须遵循原则——左闭右开(the same 循环不变量)

All in all,浅浅总结一下数组:

  • 1.首先是基本性质:
  • 数组下标都是从0开始的。
  • 数组的元素是不能删的,只能覆盖。
  • 2.然后是常用的处理方法:(需要特别熟悉)二分法、双指针法、滑动窗口。

你可能感兴趣的:(代码随想录,一刷,算法,矩阵,线性代数)