5939. 半径为 k 的子数组平均值
https://leetcode-cn.com/problems/k-radius-subarray-averages/
- 提交时间:2021-11-28 05:12:47
- 执行用时:268 ms, 在所有 Go 提交中击败了100.00%的用户
- 内存消耗:10.1 MB, 在所有 Go 提交中击败了100.00%的用户
- 通过测试用例:36 / 36
func getAverages(nums []int, k int) (ans []int) {
n := len(nums)
if n < k*2+1 {
for i := 0; i < n; i++ {
ans = append(ans, -1)
}
return ans
}
sumCount := 0
if k != 0 {
for o := 0; o < k*2; o++ {
sumCount += nums[o]
}
}
for i := 0; i < n; i++ {
if k != 0 && (i < k || i > n-k-1) {
ans = append(ans, -1)
continue
}
if k != 0 {
// fmt.Printf("sumCount:%+v,i-k-1:%+v,i+k:%+v\n", sumCount, i-k-1, i+k)
if i-k-1 >= 0 {
sumCount -= nums[i-k-1]
}
if i+k < n {
sumCount += nums[i+k]
}
// fmt.Printf("sumCount:%+v\n", sumCount)
ans = append(ans, sumCount/(k*2+1))
} else {
ans = append(ans, nums[i])
}
}
return ans
}