建立一个长度为c的滑动窗口并维护它的左、右端点以及总和

不断地移动窗口并计算当前窗口总和,如果小于等于 t 则计数加1

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, t, c;
    while (cin >> n >> t >> c) {
        vector<int> a;
        int ai;
        for (int i = 0; i < n; i++) {
            cin >> ai;
            a.push_back(ai);
        }
        int currSum = 0;
        for (int i = 0; i < c; i++) {
            currSum += a[i];
        }
        int ans = 0;
        int left = 0, right = c - 1;
        while (right < n) {
            if (currSum <= t) {
                ans++;
            }
            currSum -= a[left];
            left++;
            right++;
            currSum += a[right];
        }
        cout << ans << endl;
    }
    return 0;
}

时间复杂度:O(n),用于遍历数组

空间复杂度:O(n),用于存储数组