Maximum Number of Non-Overlapping Subarrays With Sum Equals Target LeetCode solution in Python
1"""2greedy, prefix sum with hashtable3O(n), O(n)4"""567class Solution:8def maxNonOverlapping(self, nums: List[int], target: int) -> int:9# hash set to record previously encountered prefix sums10prefix_sums = {0}1112res = prefix_sum = 013for num in nums:14prefix_sum += num15if prefix_sum - target in prefix_sums:16res += 117# greedily discard prefix sums before num18# thus not considering subarrays that start at before num19prefix_sums = {prefix_sum}20else:21prefix_sums.add(prefix_sum)22return res