-
-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy path2090-k-radius-subarray-averages.py
More file actions
36 lines (29 loc) · 926 Bytes
/
2090-k-radius-subarray-averages.py
File metadata and controls
36 lines (29 loc) · 926 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# time complexity: O(n)
# space complexity: O(n)
from typing import List
class Solution:
def getAverages(self, nums: List[int], k: int) -> List[int]:
if k == 0:
return nums
windowSize = 2*k + 1
result = [-1 for _ in range(len(nums))]
if windowSize > len(nums):
return result
prefixSum = [0 for _ in range(len(nums) + 1)]
for i in range(len(nums)):
prefixSum[i + 1] = nums[i] + prefixSum[i]
for i in range(k, len(nums) - k):
leftBound = i - k
rightBound = i + k
result[i] = (prefixSum[rightBound + 1] -
prefixSum[leftBound]) // windowSize
return result
nums = [7, 4, 3, 9, 1, 8, 5, 2, 6]
k = 3
print(Solution().getAverages(nums, k))
nums = [100000]
k = 0
print(Solution().getAverages(nums, k))
nums = [8]
k = 100000
print(Solution().getAverages(nums, k))