698[Medium]: Partition to K Equal Sum Subsets
2018-01-09 21:21
447 查看
Part1:题目描述
Given an array of integersnumsand a positive integer
k,
find whether it's possible to divide this array into
knon-empty subsets whose sums are all equal.
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.
Part2:解题思路
这一题我觉得对我来说还是挺难的,借鉴了leetcode上面的解法才得以解决,要再更深入的理解才行Part3:代码
class Solution {public:
bool search(vector<int>groups, int row, vector<int>& nums, int target) {
if (row < 0) return true;
// 执行完这一句之后row的值才会变
int v = nums[row--];
for (int i = 0; i < groups.size(); i++) {
if (groups[i] + v <= target) {
groups[i] += v;
if (search(groups, row, nums, target)) return true;
groups[i] -= v;
}
if (groups[i] == 0) break;
}
return false;
}
bool canPartitionKSubsets(vector<int>& nums, int k) {
int length = nums.size();
int sum = 0;
for (int i = 0; i < length; i++) {
sum += nums[i];
}
if ((sum % k) != 0) return false;
int target = sum / k;
sort(nums.begin(), nums.end());
int row = length - 1;
if(nums[row] > target) return false;
while (row >= 0 && nums[row] == target) {
row--;
k--;
}
return search(vector<int>(k), row, nums, target);
}
};
相关文章推荐
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. 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
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets(M)
- LeetCoe 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
- Partition to K Equal Sum Subsets
- LeetCode#698 Partition to K Equal Sum Subsets(week19)
- LeetCode Partition to K Equal Sum Subsets
- Leetcode | Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- LeetCode #698 Partition to K Equal Sum Subsets
- LeetCode算法问题12 —— Partition to K Equal Sum Subsets
- Partition to K Equal Sum Subsets