刷题笔记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。