LeetCode643. 子数组最大平均数 I

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

示例 1:

输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

 

注意:

  1. 1 <= k <= n <= 30,000。
  2. 所给数据范围 [-10,000,10,000]。

思路:求连续子数组最大平均数,就等同于求连续子数组最大和;因此,找到和最大的连续子数组即可。使用双指针,startIndex指向数组头元素,endIndex指向从数组0索引开始到第k个元素的位置。每次更新startIndex,endIndex即可得到下一段连续子数组和。

class Solution {
    public double findMaxAverage(int[] nums, int k) {
         double ave=0;      //用来保存最大平均值
		 double lastAve=0;    //用来保存上一次的平均值
		 int startIndex=0;  //起始索引
		 int endIndex=0;  //结束索引
        
        //计算第一段连续的和
		 for(startIndex=0;startIndexave) {
				 ave=tempAve;
			 }
		 }
		 
		 return ave/k;
    }
}

你可能感兴趣的:(leetcode,LeetCode题解,数组,双指针,java)