leetcode 977 题目链接:
https://leetcode.com/problems/squares-of-a-sorted-array/

最终ac代码:(双指针法)

class Solution{public:    vector<int> sortedSquares(vector<int> &nums)    {        vector<int> v;        int left = 0;        int right = nums.size() - 1;        while (left <= right)        {            if (nums[left] * nums[left] < nums[right] * nums[right])            {                v.push_back(nums[right] * nums[right]);                --right;            }            else            {                v.push_back(nums[left] * nums[left]);                ++left;            }        }        reverse(v.begin(), v.end());        return v;    }};

std::vector operator[] 不做越界查看,vector::at 才查看

leetcode 209 题目链接:
https://leetcode.com/problems/minimum-size-subarray-sum/

ac代码:(滑动窗口) 毛病:圈复杂度比拟大

class Solution{public:    int minSubArrayLen(int target, vector<int> &nums)    {        int wl = 0;        int wr = 0;        int wsum = 0;        int minWlen = INT_MAX;        while (true)        {            if (wsum < target)            {                if (wr == nums.size())                    break;                wsum += nums[wr];                ++wr;            }            else            {                int wlen = wr - wl;                if (wlen < minWlen)                    minWlen = wlen;                wsum -= nums[wl];                ++wl;            }        }        if (minWlen == INT_MAX)            return 0;        return minWlen;    }};

双循环版本(复杂度依然是O(n),圈复杂度升高):

class Solution{public:    int minSubArrayLen(int target, vector<int> &nums)    {        int wl = 0;        int wsum = 0;        int minWlen = INT_MAX;        for (int wr = 0; wr < nums.size(); ++wr)        {            wsum += nums[wr];            while (wsum >= target)            {                int wlen = wr - wl + 1;                if (wlen < minWlen)                    minWlen = wlen;                wsum -= nums[wl++];            }        }        if (minWlen == INT_MAX)            return 0;        return minWlen;    }};

leetcode 59
https://leetcode.com/problems/spiral-matrix-ii/
ac代码:

class Solution{public:    vector<vector<int>> generateMatrix(int n)    {        vector<vector<int>> v(n);        for (int i = 0; i < v.size(); i++)        {            v[i] = vector<int>(n);        }        int square = n * n;        int loopnum = n / 2;        if (n % 2 == 1)        {            v[loopnum][loopnum] = square;        }        int num = 1;        for (int i = 0; i < loopnum; i++)        {            for (int j = i; j < n - 1 - i; ++j)            {                v[i][j] = num++;            }            for (int j = i; j < n - 1 - i; ++j)            {                v[j][n - i - 1] = num++;            }            for (int j = n - i - 1; j > i; --j)            {                v[n - i - 1][j] = num++;            }            for (int j = n - i - 1; j > i; --j)            {                v[j][i] = num++;            }        }        return v;    }};