113 - 643 子数组最大平均数1
题目
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
示例 1:
输入: [1,12,-5,-6,50,3], k = 4 输出: 12.75 解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
注意:
1 <= k <= n <= 30,000。
所给数据范围 [-10,000,10,000]。
解答
平均数最大,也就是加和最大。关键要是连续的k个数。
两个for循环
var findMaxAverage = function(nums, k) {
let sum = 0
for (let i = 0; i < k; i++) {
sum += nums[i]
}
let max = sum
for (let i = k; i < nums.length; i++) {
sum += nums[i] - nums[i - k]
max = Math.max(max, sum)
}
return max / k
};
Runtime: 84 ms, faster than 81.92% of JavaScript online submissions for Maximum Average Subarray I.
Memory Usage: 42.7 MB, less than 100.00% of JavaScript online submissions for Maximum Average Subarray I.
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
_max = _sum = sum(nums[0:k])
for i in range(k, len(nums)):
_sum += nums[i]-nums[i-k]
_max = max(_max, _sum)
return _max/k
Runtime: 988 ms, faster than 54.93% of Python3 online submissions for Maximum Average Subarray I.
Memory Usage: 17.6 MB, less than 12.50% of Python3 online submissions for Maximum Average Subarray I.
func max(a, b int) int {
if a > b {
return a
}
return b
}
func findMaxAverage(nums []int, k int) float64 {
var sum int
for i := 0; i < k; i++ {
sum += nums[i]
}
_max := sum
for i := k; i < len(nums); i++ {
sum += nums[i] - nums[i-k]
_max = max(_max, sum)
}
return float64(_max) / float64(k)
}
Runtime: 128 ms, faster than 62.96% of Go online submissions for Maximum Average Subarray I.
Memory Usage: 7.7 MB, less than 100.00% of Go online submissions for Maximum Average Subarray I.
一个for循环
循环里面要加上两个if判断,感觉成本可能会更高
var findMaxAverage = function(nums, k) {
let sum = 0
let max = Number.MIN_SAFE_INTEGER
for (let i = 0; i < nums.length; i++) {
sum += nums[i]
if (i >= k) {
sum -= nums[i - k]
}
if (i >= k - 1) {
max = Math.max(max, sum)
}
}
return max / k
};
Runtime: 104 ms, faster than 33.82% of JavaScript online submissions for Maximum Average Subarray I.
Memory Usage: 42.7 MB, less than 100.00% of JavaScript online submissions for Maximum Average Subarray I.
确实如此吼
还有用数组的方法,感觉更加费成本了。
Last updated
Was this helpful?