Partition to K Equal Sum Subsets
Input:
nums = [4, 3, 2, 3, 5, 2, 1], k = 4
Output:
True
Explanation:
It's possible to divide it into 4 subsets (5), (1, 4), (2,3), (2,3) with equal sums.1 <= k <= len(nums) <= 16.
0 < nums[i] < 10000.class Solution:
def canPartitionKSubsets(self, nums: List[int], k: int) -> bool:
sm = sum(nums)
if sm % k !=0:
return False
t = sm//4
n = len(nums)
f = [[False]*(t+1) for _ in range(k)]
for i in range(n):
for kk in range(k):
f[kk][0] = True
for v in range(t,nums[i]-1,-1):
f[kk][v] |= f[kk][v-nums[i]]
res = False
for i in range(k):
res |= f[i][t]
return resLast updated