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

    
    
  • 相关阅读:
    Educational Codeforces Round 64(ECR64)
    [网络流]BZOJ4657 tower 最小割约束
    009:JSON
    008:数据类型
    007:MySQL SSL
    006:多实例安装
    005: 存储引擎介绍
    004:MySQL数据库体系结构
    003:MySQL账号创建授权以及Workbench
    002:MySQL升级以及访问连接
  • 原文地址:https://www.cnblogs.com/weedboy/p/7204529.html
Copyright © 2011-2022 走看看