一、题目描述

二、算法原理
思路:滑动窗口
1)定义两个指针,一开始都为 0,cur 从左开始遍历,定义一个 sum 来表示 prev 到 cur 之间的值的总和,当 sum >= x 时,我们要根据题目条件来保存 prev 和 cur 的值;

2)当 sum >= x 时,我们记录完 prev 和 cur 的值的之后,sum -= arr[prev],prev++,往后走,只要满足条件 sum >= x 我们就要记录 prev 和 cur 的值,不断重复上面的工作;

3)当 sum < x 时,cur++,sum += arr[cur];

4)直至遍历完整个数组;

三、代码实现
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 准备工作
int n, x;
cin >> n >> x;
vector<int> arr;
( i = ; i < n; i++) cin >> arr[i];
index[] = {};
cur = ;
prev = ;
sum = ;
(cur < n) {
sum += arr[cur];
(sum >= x) {
(index[] == && index[] == ) {
index[] = prev;
index[] = cur;
sum -= arr[prev++];
;
}
length = index[] - index[];
camplen = cur - prev;
(length == camplen || length > camplen) {
(prev < index[] || length > camplen) {
index[] = prev;
index[] = cur;
}
}
sum -= arr[prev++];
}
cur++;
}
cout << index[] + << << index[] + << endl;
;
}


