mediumDSA

How do you check if an array can be partitioned into two equal-sum subsets?

109 views
01

Understand the problem

Explain partition equal subset sum.

dpsubset
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Subset-sum boolean DP
Run Playground
def can_partition(nums):
    total = sum(nums)
    if total % 2 != 0:
        return False
    target = total // 2
    dp = [False] * (target + 1)
    dp[0] = True
    for x in nums:
        for s in range(target, x - 1, -1):    # downward = use each x once
            dp[s] = dp[s] or dp[s - x]
    return dp[target]


# --- demo ---
print(can_partition([1, 5, 11, 5]))   # True   ({1,5,5} and {11})
print(can_partition([1, 2, 3, 5]))    # False  (odd total)
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.