Leetcode # 1343. Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold
- 2023.09.07
- ★★ Medium LeetCode Sliding Window
Problem
Solution: Sliding Window
First Solution
Time Complexity: O(len(arr))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)
class Solution:
def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
ans = left = curr = 0
threshold *= k
for right in range(len(arr)):
# do logic here to add arr[right] to curr
curr += arr[right]
while right - left + 1> k:
# remove arr[left] from curr
curr -= arr[left]
left += 1
# update ans
if right - left + 1 == k and curr >= threshold:
ans += 1
return ans
Refined Solution
Time Complexity: O(len(arr))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)
class Solution:
def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
ans = curr = 0
for i in range(k - 1):
curr += arr[i]
threshold *= k
for right in range(k - 1, len(arr)):
curr += arr[right]
# update ans
if curr >= threshold:
ans += 1
curr -= arr[right - k + 1]
return ans
Last Updated on 2023/09/07 by A1go