977.有序数组的平方
文档讲解:代码随想录(programmercarl.com)
视频讲解:双指针法经典题目 | LeetCode:977.有序数组的平方
状态:ac
用时:0.5h
思路:原数组是由小到大排序,由于是用数组元素的平方排序,故绝对值越大的平方越大,其绝对值顺序是分三种情况:
1. 由大到小,则数组所有元素小于等于0;
2. 由小到大,则数组所有元素大于等于0;
3. 由大到小,再由小到大,则数组元素前半部分小于等于0,后半部分大于等于0。
第三种情况作为更一般的情况,第一二种情况作为第三种情况的特殊情况。两边都有较内侧更大的值,因此可以从数组两侧同时遍历,将平方数更大的放到新数组。
我的代码:
卡哥的代码:
比较:可以看见,我的代码虽然思路是对的,但是整洁度和可读性更差。同时,没必要把a == b单独列出来,因为a与b之间的数字的平方一定是小于a和b的,a和b的平方一定会在新数组排一起的。
209.长度最小的子数组
文档讲解:代码随想录(programmercarl.com)
视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组
状态:ac
用时:1h
思路:看到连续子数组的时候,就可以考虑一下滑动窗口的方法了。当子数组和大于等于target时,窗口从左开始缩小直至小于target,当小于窗口时,向右扩大窗口直至大于等于target。这个过程中不断比较最小的长度。
我的代码:
卡哥代码
比较:卡哥代码更为精干,从我和卡哥代码中,我可以看出我和卡哥理解的不同,卡哥的思想是移动窗口,即在窗口每移动一步,寻找满足要求的最小子序列。而我的代码所表现出来的理解其实不算滑动窗口,而是缩放窗口,通过缩放达到移动的目的。
59.螺旋矩阵II
文档讲解:代码随想录(programmercarl.com)
视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II
状态:自己没ac,看了一下别人的ac了
用时:1.5h
思路:每一条边左闭右开的规则,每次循环分四次来为矩形的边进行赋值。
问题:思路是有的,但是落实到写代码方面,就出问题,需要看看别人的代码的架构来实现,代码能力较差。