leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
https://leetcode.com/problems/partition-to-k-equal-sum-subsets/
題解
一上來以為是 dp(想到了左神講的,將一個數組分成兩個盡可能相等的部分那道題),再一想,原來是 backtracing。
class Solution {public boolean canPartitionKSubsets(int[] nums, int k) {int sum = 0;for (int n : nums) {sum += n;}int target = sum / k;if (target * k != sum) return false;return process(nums, 0, new int[k], target);}public boolean process(int[] nums, int i, int[] bucket, int target) {if (i == nums.length) return true;for (int j = 0; j < bucket.length; j++) {if (bucket[j] + nums[i] <= target) {bucket[j] += nums[i];if (process(nums, i + 1, bucket, target)) return true;bucket[j] -= nums[i];}}return false;} }一把過,但是效率很低。
總結
以上是生活随笔為你收集整理的leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 695. Max Ar
- 下一篇: leetcode 712. Minimu