滑动窗口最大和

有一个N个整数的数组,和一个长度为M的窗口,窗口从数组内的第一个数开始滑动直到窗口不能滑动为止,每次窗口滑动产生一个窗口和(窗口内所有数的和),求窗口滑动产生的所有窗口和的最大值。

#include<iostream>
#include<vector>
#include<string>

using namespace std;

int MaxValue(vector<int> data, int winLen)
{
    if (winLen == 0) {
        return 0;
    }

    int count = 0;
    for(int i = 0; i < winLen; ++i) {
        count += data[i];
    }

    int out = count;
    for (int i = winLen; i < data.size(); ++i) {
        count += data[i] - data[i - winLen];
        if (out < count) {
            out = count;
        }
    }
    
    return out;
}

int main()
{
    int len;
    cin >> len;
    vector<int> data;
    for (int i = 0; i < len; i++) {
        int a;
        cin>>a;
        data.push_back(a);
    }
    int winLen;
    cin >> winLen;
    cout << MaxValue(data, winLen)<< endl;
    return 0;
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
AC鸽想进大厂:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务