代码随想录第二天| 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

977.有序数组的平方

思路:

新建一个数组存放数据,建立左右指针,分别在原数组的首端和尾端。进行比较数值,找到数值后存放进新数组。

debug问题:

1. while(left?right)中间是否有等号

2. 新建数组类型

看视频后:

只有小于的话相等的情况会漏掉。

vector<int> result(nums.size(),0)



209.长度最小的子数组

思路:

快指针寻找数组的头,慢指针寻找数组的尾,找到头缩小尾,找最小长度。

debug问题:

用的while里面if-else判断,如果小于则头前进,如果大于等于则尾前进,但是在while的判断条件上出现了越界。

看视频后:

用两个while进行循环,不妨碍O(2n)->O(n),while(快指针),如果满足条件则while(慢指针)缩小。


59.螺旋矩阵II

思路:

该题无思路……

看视频后:

建立二维数组,考虑好边界值——左闭右开(固定不变量),存储起始位置x,y,确定圈数和需要循环的圈数(n/2),用计数count存进数组。

在大循环while(loop<=(n/2))下建立四个循环,考虑边界。最后注意奇数圈中心的数要单独讨论存放。

数组建立:vector<vector<int>> A(n, vector<int>(n, 0));



数组总结

这两天的问题是边界值即区间统一和快慢指针的运用。二维数组得加强。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容