有序数组的平方
给自己的错误一些注意的点:
-
创建一个包含10个整数的新数组: int[] nums = new int[10];
-
当希望返回数组是,只需return加数组名,不需要括号和索引。
-
变量名可以更具实际意义一些,如快慢指针,可以fastIndex, slowIndex, 如果左右指针,可以left, right
长度最小的子数组
滑动窗口:滑动窗口适用于求连续子序列问题,连续是关键字,一旦在题目描述中看到子序列是可以不连续的,那么就可以大胆排除滑动窗口这个方法了,力扣上常见的例题有的题目最长不含重复字母的子序列,最小覆盖子串之类的问题。
时间复杂度:O(n)
空间复杂度:O(1)
这里和双指针的思想很接近,利用左右两个指针来控制滑动窗口左右端移动,以此来扩大和缩小滑动窗口。如果对滑动窗口不了解,可以参考:滑动窗口?别滑了,我滑跪还不行吗?,这里对场景和题目进行了分析,也可以看看【数据结构与算法】滑动窗口详解,这里对滑动窗口的移动讲的更清晰
在写代码时,注意在缩小窗口,即左指针左移时,使用while而不是if,因为缩小的次数可能不为1
螺旋矩阵
螺旋矩阵最好结合视频去理解,强推卡哥的B站视频
螺旋矩阵要注意循环不变量,设置对每条边的遍历规则时要统一。螺旋遍历时,每转一圈,边长左右都减一,故边长减二,一共旋转n/2圈(n为奇数时单独为中心赋值)。循环的条件可以设置为while(loop < n/2)
一定要注意while循环的判断条件,要注意Java的判断条件需要返回的是Boolean类型,要认真考虑条件中是否可以取等号。另外在写函数方法时,不要忘记返回值
碎碎念
这次的任务比较拖沓,一周三次组会汇报实在是太折磨人了,以后要尽量不要推迟每日的计划,很容易会断更导致计划无法完成。有时间的时候可以提前写写代码。再累也就是两个月的打卡,坚持就是胜利