#include <iostream> #include <vector> #include <climits> // 用于INT_MAX using namespace std; int main() { int n, m; cin >> n >> m; // 读取糖果数量和目标甜度 vector<int> candies(n); // 创建存储糖果甜度的数组 // 读取每个糖果的甜度 for (int i = 0; i < n; i++) { cin >> candies[i]; } int minLen = INT_MAX; // 初始化最短长度为最大整数 int left = 0; // 滑动窗口左指针 int sum = 0; // 当前窗口甜度总和 // 右指针遍历整个糖果串 for (int right = 0; right < n; right++) { sum += candies[right]; // 将当前糖果加入窗口 // 当窗口甜度满足条件时尝试缩小窗口 while (sum >= m) { // 更新最小长度(当前窗口长度 = right - left + 1) minLen = min(minLen, right - left + 1); // 从窗口左侧移除糖果并移动左指针 sum -= candies[left]; left++; // 缩小窗口 } } // 输出结果(若未找到满足条件的子串则输出0) cout << (minLen == INT_MAX ? 0 : minLen) << endl; return 0; } /************************************************************** Problem: 2105 User: hulaoshi Language: C++ Result: Accepted Time:100 ms Memory:2972 kb ****************************************************************/