代码随想录算法训练营第37期 第二天 | LeetCode977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
一、977.有序数组的平方
解题代码C++:
cpp
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int len = nums.size();
for(int i = 0; i < len; i ++)
nums[i] = nums[i] * nums[i];
sort(nums.begin(), nums.end());
return nums;
}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0977.有序数组的平方.html
二、209.长度最小的子数组
解题代码C++:
cpp
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int len = nums.size();
int sum = 0, k = len + 5;
for(int i = 0, j = 0; i < len; i ++)
{
sum += nums[i];
while(sum >= target && j <= i)
{
sum -= nums[j];
j ++;
if(sum < target) k = min(k, i - j + 2);
}
}
if(k == len + 5) return 0;
else return k;
}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0209.长度最小的子数组.html
三、59.螺旋矩阵II
解题代码C++:
cpp
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
vector<vector<int>> res(n, vector<int>(n));
for(int k = 1, x = 0, y = 0, d = 0; k <= n * n; k ++)
{
res[x][y] = k;
int a = x + dx[d], b = y + dy[d];
if(a >= n || a < 0 || b >= n || b < 0 || res[a][b])
{
d = (d + 1) % 4;
a = x + dx[d];
b = y + dy[d];
}
x = a, y = b;
}
return res;
}
};
题目链接/文章讲解/视频讲解:
https://programmercarl.com/0059.螺旋矩阵II.html