Arrays 最大平均子阵I,Leetcode。超过时限
这个问题来自leetcode。我的输出是正确的,123/123测试用例通过了,但耗时太长。你能帮我改进我的代码吗 问题: 给定一个由n个整数组成的数组,查找具有最大平均值的给定长度k的连续子数组。您需要输出最大平均值 例1: 输入:[1,12,-5,-6,50,3],k=4 产出:12.75 说明:最大平均值为(12-5-6+50)/4=51/4=12.75Arrays 最大平均子阵I,Leetcode。超过时限,arrays,max,average,sub-array,Arrays,Max,Average,Sub Array,这个问题来自leetcode。我的输出是正确的,123/123测试用例通过了,但耗时太长。你能帮我改进我的代码吗 问题: 给定一个由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)
class Solution {
public double findMaxAverage(int[] nums, int k) {
int i = 0;
int j = 0;
double max = Integer.MIN_VALUE;
while(i+k <= nums.length){
double sum = 0;
while(i < k + j){
sum += nums[i];
i++;
}
max = Math.max(max, sum);
j++;
i = j;
}
return max/k;
}
}
类解决方案{
公共双findMaxAverage(int[]nums,int k){
int i=0;
int j=0;
double max=整数.MIN_值;
而(i+k
- 我猜它可能会在
s时被卡在其中一个上
我们可以解决问题O(N)
:
公共类解决方案{
公共静态最终双findMaxAverage(
最终整数[]nums,
最终整数k
) {
长电流和=0;
对于(int-index=0;index
public class Solution {
public static final double findMaxAverage(
final int[] nums,
final int k
) {
long currSum = 0;
for (int index = 0; index < k; index++) {
currSum += nums[index];
}
long maxSum = currSum;
for (int index = k; index < nums.length; index++) {
currSum += nums[index] - nums[index - k];
maxSum = Math.max(maxSum, currSum);
}
return (double) maxSum / k;
}
}