698. Partition to K Equal Sum Subsets
2018-01-27 15:02
465 查看
Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into k non-empty subsets whose sums are all equal.
Example 1:
Note:
1 <= k <= len(nums) <= 16.
0 < nums[i] < 10000.
Example 1:
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.
Note:
1 <= k <= len(nums) <= 16.
0 < nums[i] < 10000.
class Solution { public boolean canPartitionKSubsets(int[] nums, int k) { int N = nums.length; Arrays.sort(nums); int sum = Arrays.stream(nums).sum(); int target = sum / k; if (sum % k > 0 || nums[N - 1] > target) return false; boolean[] dp = new boolean[1 << N]; dp[0] = true; int[] total = new int[1 << N]; for (int state = 0; state < (1 << N); state++) { if (!dp[state]) continue; for (int i = 0; i < N; i++) { int future = state | (1 << i); if (state != future && !dp[future]) { if (nums[i] <= target - (total[state] % target)) { dp[future] = true; total[future] = total[state] + nums[i]; } else { break; } } } } return dp[(1 << N) - 1]; } }
相关文章推荐
- LeetCoe 698 (Partition to K Equal Sum Subsets)
- 698[Medium]: Partition to K Equal Sum Subsets
- LWC 54:698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets(M)
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698 Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- [LeetCode] Partition to K Equal Sum Subsets 分割K个等和的子集
- Leetcode | Partition to K Equal Sum Subsets
- Partition to K Equal Sum Subsets
- Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- LeetCode #698 Partition to K Equal Sum Subsets
- [LeetCode] Partition to K Equal Sum Subsets
- Partition to K Equal Sum Subsets
- LeetCode Partition to K Equal Sum Subsets