一、题目描述

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

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

- 当 sum < x 时,cur++,sum += arr[cur]。

- 直至遍历完整个数组。
三、代码实现
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 准备工作
int n, x;
cin >> n >> x;
vector<int> arr(n, 0);
for (int 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;
;
}


