C++ 中的最大平均子陣列 I
假設我們有一個包含 n 個元素的陣列,我們需要找到長度為 k 的連續子陣列,該子陣列具有最大的平均值。我們需要返回最大的平均值。
因此,如果輸入類似於 [1,13,-5,-8,48,3],且 k = 4,那麼輸出將為 12.0,因為 (13-5-8+48)/4 = 12.0。
為了解決這個問題,我們將遵循以下步驟 −
sum := 0
for 初始化 i := 0,當 i < k 時,更新(將 i 增加 1),執行 −
sum := sum + nums[i]
maxi := sum
for 初始化 i := k,當 i < nums 的大小時,更新(將 i 增加 1),執行 −
sum := sum + nums[i] - nums[i - k]
if sum > maxi,則 −
maxi := sum
return maxi / k
示例
下面我們來看一下實現過程,以便加深理解 −
#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;
}
};
main(){
Solution ob;
vector<int> v = {1,13,-5,-8,48,3};
cout << (ob.findMaxAverage(v, 4));
}輸入
{1,13,-5,-8,48,3}, 4輸出
12
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP