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

发布时间 2023-11-30 22:38:10作者: 梅子酒ya

LeetCode 977.有序数组的平方

视频连接: LeetCode 977

思路: 利用双指针,通过首指针和尾指针的平方值比较,大的那个装入新的vector数组中,然后再更新指针。

 

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int k = nums.size() - 1;
        vector<int> result(nums.size(), 0); //新设置一个跟传入数组容量一样的数组 
        for (int i = 0, j = nums.size() - 1; i <= j;) { //重点:设置指针的初始值,将两个指针各置在首位位置。 
            if (nums[i] * nums[i] < nums[j] * nums[j])  {
                result[k--] = nums[j] * nums[j];
                j--;
            }
            else {
                result[k--] = nums[i] * nums[i];
                i++;
            }
        }
        return result;
    }
};

 

 

LeetCode 209.长度最小的子数组

视频连接: LeetCode209

思路:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int result=INT32_MAX;
        int sum=0; //滑动窗口数量之和
        int i=0; //滑动窗口起始位置
        int subLength=0; //滑动窗口的长度
        for(int j=0;j<nums.size();j++){
            sum+=nums[j];
            while(sum>=target){
                subLength = (j-i+1); //取子序列的长度
                result = result < subLength ? result:subLength;
                sum -= nums[i++];
            }
        }
        return result==INT32_MAX?0:result;
    }
};

 

LeetCode 59.螺旋矩阵II

视频链接: LeetCode59

思路: