题目链接
就是个尺取。
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5 + 1000;
int n,m;
int a[N];
int sum;
int main() {
int T;
cin>>T;
while(T--){
scanf("%d%d",&n,&m);
int t;
for (int i = 1; i <= n; i++)
scanf("%d",&a[i]);
int ans = n+2;
sum = 0;
int l = 0,r = 0;
while(r <= n){
if (sum >= m){
ans = min(ans,r-l);
l++;
sum = sum - a[l];
}
if (sum < m || l == r) {
r++;
sum += a[r];
}
}
if (ans == n+2) printf("0\n"); else printf("%d\n",ans);
}
return 0;
}
本文介绍了一种使用滑动窗口解决特定类型问题的算法实现。通过C++代码示例展示了如何利用滑动窗口来找到满足条件的最短子数组长度。适用于初学者理解尺取法的基本原理。
&spm=1001.2101.3001.5002&articleId=81216158&d=1&t=3&u=66e8f39657b844a0a0ced0d46b1fdcf0)

被折叠的 条评论
为什么被折叠?



