Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 1.77 KB

_325. Maximum Size Subarray Sum Equals k.md

File metadata and controls

64 lines (48 loc) · 1.77 KB

All prompts are owned by LeetCode. To view the prompt, click the title link above.

Back to top


First completed : April 15, 2025

Last updated : April 15, 2025


Related Topics : Array, Hash Table, Prefix Sum

Acceptance Rate : 50.5 %


Solutions

Python

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