目录
[209. 长度最小的子数组](#209. 长度最小的子数组)
[59. 螺旋矩阵 II](#59. 螺旋矩阵 II)
[58. 区间和(第九期模拟笔试)](#58. 区间和(第九期模拟笔试))
209. 长度最小的子数组
cpp
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int sum = 0;
int len = nums.size() + 1;
int right = 0;
for (int left = 0; left < nums.size(); left++) {
while (sum < target && right < nums.size()) {
sum += nums[right++];
}
if (sum >= target) {
len = min(right - left, len);
}
sum -= nums[left];
}
if (len == nums.size() + 1) {
return 0;
}
return len;
}
};
59. 螺旋矩阵 II
cpp
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int num = 1;
int top = 0;
int bottom = n - 1;
int left = 0;
int right = n - 1;
vector<vector<int>> ans(n, vector<int>(n));
while (left <= right && top <= bottom) {
// 左到右,上界收缩
for (int i = left; i <= right; i++) {
ans[top][i] = num++;
}
top++;
// 上到下,右界收缩
for (int i = top; i <= bottom; i++) {
ans[i][right] = num++;
}
right--;
// 右到左,下界收缩
if (top <= bottom) {
for (int i = right; i >= left; i--) {
ans[bottom][i] = num++;
}
bottom--;
}
// 下到上,左界收缩
if (left <= right) {
for (int i = bottom; i >= top; i--) {
ans[i][left] = num++;
}
left++;
}
}
return ans;
}
};
58. 区间和(第九期模拟笔试)
cpp
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n;
cin>>n;
vector<int> s(n+1);
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]+=s[i-1];
}
int a,b;
while(cin>>a>>b){
cout<<s[b+1]-s[a]<<endl;
}
return 0;
}
