leetcode[Maximum Average Subarray I]
来源:互联网 发布:landsat的波段数据 编辑:程序博客网 时间:2024/05/27 20:51
解法一:
class Solution { public double findMaxAverage(int[] nums, int k) { //int maxSum = Integer.MIN_VALUE; 求和的不能用与数组无关的数来赋初值 //题目中提到数组长度大于等于1 //int maxSum = nums[0];//不能用这个来判断,因为maxSum的长度一定来自于k个数 //因为1 <= k <= n <= 30,000. k <= n int maxSum = 0; for(int i = 0; i < k; i++){ maxSum += nums[i]; } int thisSum = 0; //上面做过一次了,这里就从第二组的k个数开始 for(int i = 1; i <= nums.length - k; i++){//注意判断条件是i <= nums.length - k 而不是i < nums.length - k,举个例子来判断即可 thisSum = 0; for(int j = 0; j < k; j++){ thisSum += nums[j + i]; } maxSum = Math.max(maxSum, thisSum); } return (double)(maxSum) / k; }}
解法二:
class Solution { public double findMaxAverage(int[] nums, int k) { long sum = 0; for (int i = 0; i < k; i++)//先求出第一组的k个数的和 sum += nums[i]; long max = sum;//当前最大值 //这里用一个循环就可以搞定,用到slide window的思想,即使用两重循环,在往后移动时,中间的数也没变,变的只是首尾的数 for (int i = k; i < nums.length; i++) { //所以只用对往后移动时首尾的改变一下,来个差值,就得到了第i组的k个数,i = 1,2,...k-i+1 //比如,第一组是0到k-1,那么第二组就是1到k,对nums[k] - nums[0]就得到了新的sum,第二组的,相当于遍历求和 //第三组又是在第二组的基础上,首尾又不同,是正确的,因为第二组就相当于是遍历求和来的,不存在没加上啥的 sum += nums[i] - nums[i - k]; max = Math.max(max, sum); } return max / 1.0 / k; }}
阅读全文
0 0
- leetcode[Maximum Average Subarray I]
- leetCode-Maximum Average Subarray I
- LeetCode 643. Maximum Average Subarray I
- [LeetCode]643. Maximum Average Subarray I
- [LeetCode] 643. Maximum Average Subarray I
- LeetCode刷题【Array】 Maximum Average Subarray I
- LeetCode 643. Maximum Average Subarray I
- leetcode 643. Maximum Average Subarray I
- [LeetCode]643. Maximum Average Subarray I
- Leetcode 643 Maximum Average Subarray I
- LeetCode 643 Maximum Average Subarray I
- leetcode 643. Maximum Average Subarray I
- LeetCode 643. Maximum Average Subarray I
- leetcode 643. Maximum Average Subarray I
- LeetCode 643. Maximum Average Subarray I
- Leetcode之Maximum Average Subarray I
- LeetCode-Easy-Java-Maximum Average Subarray I
- Leetcode 643 Maximum Average Subarray I
- 查询包含某个字段的表
- ubuntu 14.04源码编译bitcoin
- 一些小问题记录
- jquery.qrcode.js 动态生成二维码插件
- Leetcode#26: Remove Duplicates from Sorted Array
- leetcode[Maximum Average Subarray I]
- tcp/ip通信实例
- 小程序文档整理之 -- 场景值
- maven
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- simple linear regression详解
- C语言编程
- USB枚举过程
- kmp入门--kmp运用