代码随想录算法训练营day2 | 977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
刷题笔记day2
977. 有序数组的平方
文章讲解:代码随想录
视频讲解:哔哩哔哩
是否自己做出来通过全部用例:是
自己写的代码
只想到暴力解法,平方后再写排序算法进行排序。
遇到的困难/犯的错误
排序算法不需要自己写,直接有现成的库函数sort()
函数 可以用。
看了题解后的收获
利用了排序后的正负数平方后的特性,让自己进一步掌握了快慢指针法的思想,看了题解后自己又用快慢指针法重新写了一遍。
代码如下:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> result(nums.size(), 0);
int i = 0;
int j = nums.size() - 1;
int k = nums.size() - 1;
while (i <= j) {
if (nums[j] * nums[j] > nums[i] * nums[i]) {
result[k--] = nums[j] * nums[j];
--j;
}
else {
result[k--] = nums[i] * nums[i];
i++;
}
}
return result;
}
};
209.长度最小的子数组
文章讲解:代码随想录
视频讲解:哔哩哔哩
是否自己做出来通过全部用例:否
遇到的困难/犯的错误
思路错误,while的循环条件有问题,应该是数的和大于target后直接跳出循环。
看了题解后的收获
纠正了暴力解法中的错误,了解了滑动窗口法。
59.螺旋矩阵II
文章讲解:代码随想录
视频讲解:哔哩哔哩
是否自己做出来通过全部用例:否
遇到的困难/犯的错误
越想越复杂,没有好思路。
看了题解后的收获
这题沿用了二分法中的循环不变原则,坚持左闭右开原则。
每次循环xstart,ystart和offset都+1。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jhhuangのblog!