1
# Runtime: 165 ms (Top 74.37%) | Memory: 13.8 MB (Top 95.72%)3
def canPartitionKSubsets(self, nums: List[int], k: int) -> bool:4
def dfs(idx, curr, cnt, limit):8
return dfs(0, 0, cnt + 1, limit)12
if visited[i] or nums[i] + curr > limit:16
if dfs(i + 1, curr + nums[i], cnt, limit):20
while i + 1 < len(nums) and nums[i] == nums[i + 1]: # pruning122
if curr == 0 or curr + nums[i] == limit: # pruning227
if len(nums) < k or sum(nums) % k:31
for i in range(len(nums)):32
if nums[i] > numSum // k:35
visited = [False] * len(nums)36
return dfs(0, 0, 0, numSum // k)