All prompts are owned by LeetCode. To view the prompt, click the title link above.
First completed : April 15, 2025
Last updated : April 15, 2025
Related Topics : Array, Hash Table, Prefix Sum
Acceptance Rate : 50.5 %
class Solution:
def maxSubArrayLen(self, nums: List[int], k: int) -> int:
pref = [0] + list(accumulate(nums))
two_sum = defaultdict(set) # {difference val to k: [list of index sources]}
for i, x in enumerate(pref) :
two_sum[k + x].add(i)
output = 0
for i, x in enumerate(pref) :
if x not in two_sum :
continue
for j in two_sum[x] :
if j >= i :
continue
output = max(output, abs(i - j))
return output
class Solution:
def maxSubArrayLen(self, nums: List[int], k: int) -> int:
prev = {0: -1}
output, curr_sum = 0, 0
for i, x in enumerate(nums) :
curr_sum += x
if curr_sum - k in prev : # Check prefix sum for possible k match
output = max(output, i - prev[curr_sum - k])
if curr_sum not in prev : # First occurance will always be farthest / longest
prev[curr_sum] = i
return output