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

    leetcode644. Maximum Average Subarray II

    题意:

    给定由n个整数组成的数组,找到长度大于或等于k的连续子阵列,其具有最大平均值。您需要输出最大平均值。

    思路:

    先计算前k个的avg和sum,然后每次往后加一个数,每次加一个数的同时用一个tempsum( = sum)依次减少前置的数,以此来模拟区间向后移动的计算。与直接的暴力相比,少了向后加又前减的一些步骤,减少了许多重复计算,但是这应该不是最优的算法,更快的算法暂时还没想到。

    ac代码:

    C++

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

    python

    
    
  • 相关阅读:
    Angularjs乱记
    tornado code
    angularjs中templateUrl的路径问题
    bat脚本禁用和开启本地连接
    http-server使用
    angularjs loading, animate
    tornado输出json
    cmder切换路径、设置命令别名
    python __setattr__和__getattr__
    滚动加载
  • 原文地址:https://www.cnblogs.com/weedboy/p/7204529.html
Copyright © 2011-2022 走看看