###### tags: `阿瑜` # Day 16: LeetCode 698. Partition to K Equal Sum Subsets ## Source https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ ### 1.題意: 將陣列(nums)中的數字分組,分k組,每組加總值必須一樣。 ### 2.思路: 每組(subset)加總值為**sum(nums)/k** 條件:加某一element沒有超過subset的sum則往下一element走(recursive) 有超過則不加入組裡,往下組加看看 ### 3.程式碼: ```python= class Solution(object): def canPartitionKSubsets(self, nums, k): sums = [0]*k subsum = sum(nums) / k nums.sort(reverse=True) l = len(nums) def walk(i): if i == l: return len(set(sums)) == 1 for j in xrange(k): sums[j] += nums[i] if sums[j] <= subsum and walk(i+1): return True sums[j] -= nums[i] if sums[j] == 0: break return False '''加上會比較慢 if sum(nums)%k!=0: return False ''' return walk(0) ``` #### Level:`Medium`