Leetcode # 2875. Minimum Size Subarray in Infinite Array
- 2023.10.01
- ★★ Medium LeetCode Sliding Window
Problem
https://leetcode.com/contest/weekly-contest-365/problems/minimum-size-subarray-in-infinite-array/
Solution: Sliding Window
Time Complexity: O(n)
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)
class Solution:
def minSizeSubarray(self, nums: List[int], target: int) -> int:
_sum = sum(nums)
end = len(nums) * ceil(target / _sum) * 2
ans = set()
left = curr = 0
for right in range(end):
# do logic here to add arr[right] to curr
curr += nums[right % len(nums)]
while curr > target:
# remove arr[left] from curr
curr -= nums[left % len(nums)]
left += 1
# update ans
if curr == target:
pair = (left % len(nums), right - (left - left % len(nums)))
if pair in ans: break
ans.add(pair)
return min((r - l + 1) for l, r in ans) if ans else -1
Last Updated on 2023/10/01 by A1go