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));
数组总结
这两天的问题是边界值即区间统一和快慢指针的运用。二维数组得加强。