LintCode求最大平均值子数组
程序员文章站
2022-03-05 13:45:18
...
这个题我深有体会,在事先说明的这段代码在运行时只有34%通过测试,而错误原因我把它归结为系统出错
(???????)
我的输出答案是错误的??????????
我采用的是暴力遍历法,就每一中可能都去进行比较。当然我看了别人还有二分法,然而我并没有看懂。我的代码如下:
package com.test;
public class ZuiDaPingJunZiShuZu {
public static void main(String[] args){
//int arr[] = {1,12,-5,-6,50,3};
int arr[] = {-1,-2,-3,-100,-1,-50};
double a = maxAverage(arr,4);
System.out.println(a);
}
/**
* 求一个最大子数组,其子数组的长度为k
*/
public static double maxAverage(int[] nums, int k) {
int len = nums.length; //数组长度
int count = 1; //数组指针
double maxSum = 0; //最大子数组的和
/*
* 先将前k数之和赋给maxSun
*/
for (int i = 0; i < k; i++) {
maxSum += nums[i];
}
/*
* 主要算法
*/
while(count <= len - k){
//temp每次大循环都要重置,所以在这里新建
double temp = 0;
//从第二数开始每k个数求和并赋给temo
for (int j = 0; j < k ; j++) {
temp += nums[count+j];
}
//比较temp和maxSun的值,记住每次计数器都要向后移一位
if(temp > maxSum){
maxSum = temp;
count++;
}else{
count++;
}
}
return maxSum/k;
}
}