测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A18810. 不定长滑动窗口

填空题 较难

题目描述

不定长滑动窗口

题目描述

给定正整数数组与数字s,找到和≥s的最短连续子数组长度,不存在输出0。

输入

第一行 n s

第二行 n 个正整数

输出:最短长度

样例输入

6 7
2 3 1 2 4 3

样例输出

2

参考答案

#include <iostream> #include <vector> #include <climits> using namespace std; int main() { int n, s; cin >> n >> s; vector<int> a(n); for(int i = 0; i < n; i++) cin >> a[i]; int l = 0, sum = 0; int ans = INT_MAX; for(int r = 0; r < n; r++) { sum += a[r]; while(sum >= s) { ans = min(ans, r - l + 1); sum -= a[l]; l++; } } if(ans == INT_MAX) cout << 0; else cout << ans; return 0; }
上一题 下一题