题目977. 有序数组的平方 - 力扣(LeetCode)
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int left=0;int right=nums.size()-1;vector<int> result(nums.size(),0);int i=right;while(left<=right){if(nums[left]*nums[left]>nums[right]*nums[right]){result[i--]=nums[left]*nums[left];left++;}else{result[i--]=nums[right]*nums[right];right--;}}return result;}
};
题目209. 长度最小的子数组 - 力扣(LeetCode)
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left=0;//滑动窗口起始位置int right=0;//滑动窗口结束位置int arrylen=0;//滑动窗口大小int sum=0;//目前滑动窗口总和int result=INT32_MAX;//返回值while(right<nums.size()){//滑动窗口结束位置的移动sum+=nums[right++];while(sum>=target)//如果sum大于target,先记录长度,再移动滑动窗口起始位置,一直检查到不满足这个条件,再移动滑动窗口结束位置{arrylen=right-left;//注意长度计算result=result>arrylen?arrylen:result;//长度最小的数组,要和上次记录满足条件的数字比较,最小的那个就是需要的sum-=nums[left++];}}//判断是不是没有符合条件的子数组,如果没有返回0return (result==INT32_MAX)?0:result;}
};
题目59. 螺旋矩阵 II - 力扣(LeetCode)
class Solution {
public:vector<vector<int>> generateMatrix(int n) {int len = n - 1; // 每次填数字的单边长度vector<int> vec(n, 0);vector<vector<int>> res;int j = 0;while (j++ < n) {res.push_back(vec);}// 开始填充int x = 0;int y = 0;int i = 1; // i要填充的数组int loop = n / 2; // 旋转填充的次数,n为基数中间单独处理while (loop--) {// 从左到右for (x; x < len; x++) {res[y][x] = i++;}// 从上到下for (y; y < len; y++) {res[y][x] = i++;}// 从右到左for (x; x > n - len - 1; x--) {res[y][x] = i++;}// 从下到上for (y; y > n - len - 1; y--) {res[y][x] = i++;}x++;y++;len--;}// 注意:如果n为奇数,需要给最中间单独赋值int mid = n / 2;if (n % 2 == 1) {res[mid][mid] = i;}return res;}
};
最后
学习了滑动窗口,这个要再多练习一下,不是很熟练,,需要熟练掌握双指针,还有对左闭右开区间要熟悉,螺旋矩阵可以多练练,,加油!!