zoukankan      html  css  js  c++  java
  • 643. Maximum Average Subarray

    Given an array consisting of (n) integers, find the contiguous subarray of given length (k) that has the maximum average value. And you need to output the maximum average value.

    Example 1:

    Input: [1,12,-5,-6,50,3], k = 4
    Output: 12.75
    Explanation: Maximum average is (12-5-6+50)/4 = 51/4 = 12.75
    

    Note:

    1. 1 <= k <= n <= 30,000.
    2. Elements of the given array will be in the range [-10,000, 10,000].

    自己方法1 Brute Force:
    窗口k = 4, 从数组左到右滑动, 代码省略.
    (O(n*k)) time, (O(1)) extra space.

    自个方法2 改进版的 Brute Force:
    想法如下:

    k = 4 的情形
    
    1	12	-5	-6	50	3
    ^			 ^
    
    1	12	-5	-6	50	3
    	^			^
    明显的, 第一行的 sum  + 50  -  1 就是第二行的 sum
    					A[i]  A[i-k]
    

    (O(n)) time, (O(1)) extra space.

    double findMaxAverage(vector<int>& A, int k) {
        int i, sum = 0, max = INT_MIN;
        for (i = 0; i < k; i++) sum += A[i];
        max = max > sum ? max : sum;
        for (i = k; i < A.size(); i++) {
            sum = sum + A[i] - A[i - k];
            max = max > sum ? max : sum;
        }
        return 1.0 * max / k;
    }
    
  • 相关阅读:
    xml
    企业级应用和互联网应用的区别
    javaee学习目标
    数据库基本原理
    数据库学习感想
    数据库设计
    团队项目自我评价
    团队项目-软件度量
    团队项目-初级版本
    团队项目—详细设计
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7365816.html
Copyright © 2011-2022 走看看