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; } };