Skip to solution
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.

Nudge consolestandby

Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.

03

Study the solution

If the total is odd, it's impossible. Otherwise it reduces to a subset-sum / 0-1 knapsack: can any subset reach total/2? Use a boolean dp[sum] updated downward per element. O(n × sum) time, O(sum) space.

Solution ready — 2 min read

Classified // press E to declassify

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.

Transmission complete // awaiting log

KEEP THE
STREAK ALIVE.

Dossier 97 of 127 decoded in the Data Structures & Algorithms track. One more won't hurt.

Back to track