【发布时间】:2019-01-05 16:59:17
【问题描述】:
我正在处理 Leetcode 问题,但无法清除所有测试用例。 它说其中一种解决方案已超过时间限制
给定一个由 n 个整数组成的数组,找到给定长度 k 且平均值最大的连续子数组。并且你需要输出最大的平均值。
示例 1: 输入:[1,12,-5,-6,50,3],k = 4 输出:12.75 解释:最大平均值为 (12-5-6+50)/4 = 51/4 = 12.75
我对这个问题的解决方案:
class Solution {
public double findMaxAverage(int[] nums, int k) {
double average = -Double.MAX_VALUE;
double temp = -Double.MAX_VALUE;
for(int i=0;i<nums.length;i++)
{
int sum = 0;
int count = 0;
for(int j=i;j<nums.length;j++)
{
count ++;
sum += nums[j];
if(count ==k)
{
temp = (double)(sum)/k;
average = Math.max(temp,average);
}
}
}
return average;
}
}
我能够清除 69/123 个测试用例。但在其他表示已超过时间限制的情况下失败。
请帮助修复我的代码。
【问题讨论】:
-
您需要将时间复杂度从 O(n^2) 提高。换句话说,想办法避免使用嵌套循环。
标签: arrays