数组 part2

62 阅读2分钟

昨天学习了leetcode 704二分查找 和 27移除元素 两道题目。

回顾:

  • 二分查找
    • 主要涉及的思想是 二分法,核心思想是搜索区间的定义;
    • 当题目中的问题是有序时,考虑是不是可以用这种思想
    • 在循环的过程中,要坚持不变量原则;
    • 针对不同的题目,可以是左闭右开,也可以是左开右闭(螺旋矩阵就可以坚持这种循环不变量原则)
  • 移除元素
    • 主要涉及的思想是 双指针法,核心思想是,通过快慢指针一个for循环里,完成两个for循环的工作
    • 要理解快慢指针的含义是什么

今日学习 leetcode 977:有序数组的平方:leetcode.cn/problems/sq…

主要记录解题思路:

  • 首先题目是可以通过暴力循环解决的,也就是两层for循环,一般这种情况的复杂度是不可接受,需要优化
  • 在看时间和空间复杂度时,我们更关心的是降低时间复杂度,毕竟手机(运行内存),还是微信(体积上G)越来越大的
  • OK,这里的题目是一个非递减顺序排列的数组,符合有序的特点
  • 数组的平方最大值在两端
  • 使 startIndex在起始位置
  • 使endIndex在终止位置
  • 比较大小,并更新位置

207:长度最小的子数组:leetcode.cn/problems/mi… 主要记录解题思路:

  • 这里也是用到了双指针法,需要注意的是一层for循环遍历的是终止位置,也就是说先将右指针往右移动到满足符合条件的位置,然后再往右移动左指针,判断满足条件的最小值
  • 还有一个点是这里的满足条件的区间的元素是什么???

59:螺旋矩阵:leetcode.cn/problems/sp… 主要记录解题思路:

  • 什么矩阵,用数组如何表示
  • 坚持循环不变量原则
  • 圈数的定义???