昨天学习了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… 主要记录解题思路:
- 什么矩阵,用数组如何表示
- 坚持循环不变量原则
- 圈数的定义???