643. Maximum Average Subarray I

643. 子數組最大平均數 I

給定 n 個整數,找出平均數最大且長度爲 k 的連續子數組,並輸出該最大平均數。

示例 1:

輸入: [1,12,-5,-6,50,3], k = 4
輸出: 12.75
解釋: 最大平均數 (12-5-6+50)/4 = 51/4 = 12.75

 

注意:

  1. 1 <= k <= n <= 30,000。
  2. 所給數據範圍 [-10,000,10,000]。

解法一

//時間複雜度O(n), 空間複雜度O(1)
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        long sum = 0;
        for(int i = 0; i < k; i++) sum += nums[i];
        int m = sum;
        for(int i = k; i < nums.size(); i++) {
            sum += (nums[i] - nums[i - k]);
            if(sum > m) m = sum;
        }
        return (double)m / k;
    }
};

按照題目意思求每個子序列的和,記錄最大值,最後求平均輸出即可。

2019/06/13 21:05
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章