day2

发布时间 2023-04-08 00:21:56作者: wangyull

977.有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int low=0;
        int high=nums.size()-1;
        vector<int> result(nums.size(),0);
        int k=nums.size()-1;
        while(low<=high)
        {
            if(nums[low]*nums[low]<nums[high]*nums[high])
            {
                result[k--]=nums[high]*nums[high];
                high--;
            }else{
                result[k--]=nums[low]*nums[low];
                low++;
            }
        }
        return result;

    }
};

做题感受:感觉还是没有完全理解双指针,最开始没想到双指针要怎么用,本质上是没有发现数组平方之后仍然是有序的这一关键点。

209 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i=0;
        int j=0;
        int sum=0;
        int result=10000000;
        int length=0;
        for(int j=0;j<nums.size();j++)
        {
            sum+=nums[j];
            while(sum>=target)
            {
                length=j-i+1;
                if (length<result)
                {
                    result=length;
                }
                sum-=nums[i++];
            }
        }
        return result==10000000? 0 : result;
    }
};