Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Trung bình cộng lớn nhất mảng con I trong C++


Mô tả bài toán

Cho mảng nums và số k. Tìm mảng con liên tiếp độ dài k có trung bình cộng lớn nhất.

Ví dụ: [1,13,-5,-8,48,3], k=4 → Mảng con [13,-5,-8,48] trung bình = 12.0.

Giải pháp (Cửa sổ trượt kích thước cố định)

  • Tính tổng k phần tử đầu.
  • Trượt cửa sổ: trừ phần tử đi ra, cộng phần tử vào, cập nhật max.
  • Trả về maxSum / k.

Ví dụ minh họa

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        int sum = 0;
        for (int i = 0; i < k; i++) sum += nums[i];
        double maxi = sum;
        for (int i = k; i < nums.size(); i++) {
            sum += nums[i] - nums[i - k];
            if (sum > maxi) maxi = sum;
        }
        return maxi / k;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1,13,-5,-8,48,3};
    cout << ob.findMaxAverage(v, 4);
    return 0;
}

Đầu vào

{1,13,-5,-8,48,3}, 4

Đầu ra

12