您的位置:首页 > 其它

LintCode求最大平均值子数组

2017-07-26 19:00 274 查看
这个题我深有体会,在事先说明的这段代码在运行时只有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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: