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:
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.
classSolution {publicbooleancanPartitionKSubsets(int[] nums,int k) {int sum =0;for (int num : nums) sum += num;if (k <=0|| sum % k !=0)returnfalse;int[] visited =newint[nums.length];returncanPartition(nums, visited,0, k,0,0, sum / k); }publicbooleancanPartition(int[] nums,int[] visited,int start_index,int k,int cur_sum,int cur_num,int target) {if (k ==1)returntrue;if (cur_sum == target && cur_num >0)returncanPartition(nums, visited,0, k -1,0,0, target);for (int i = start_index; i <nums.length; i++) {if (visited[i] ==0) { visited[i] =1;if (canPartition(nums, visited, i +1, k, cur_sum + nums[i], cur_num++, target))returntrue; visited[i] =0; } }returnfalse; }}