LeetCode:698. 划分为k个相等的子集

class Solution {

public:

bool canPartitionKSubsets(vector<int>& nums, int k) {

if (k > nums.size())

return false;

int sum = 0;

for (int v : nums) {

sum += v;

}

// 如果数字不能平分

if (sum % k != 0)

return false;

// 记录每个桶中球的数量和

vector<int> bucket(k, 0);

// 每个桶中球的数量,k是分的组数

int target = sum / k;

// 索引值为0,桶中球的数量,桶中的目标数量

return backtrack(nums, 0, bucket, target);

}

bool backtrack(vector<int>& nums, int index, vector<int>& bucket,

int target) {

if (index == nums.size()) {

// 检查是否符合要求

for (int i = 0; i < bucket.size(); i++) {

if (bucket[i] != target) {

return false;

}

}

return true;

}

//穷举nums[index]选择的桶

for(int i=0;i<bucket.size();i++){

if(bucket[i]+nums[index]>target){

continue;

}

bucket[i]+=nums[index];

if(backtrack(nums, index+1,bucket , target)){

return true;

}

bucket[i]-=nums[index];

}

return false;

}

};

会超时

相关推荐
长安er4 分钟前
LeetCode 46/51 排列型回溯题笔记-全排列 / N 皇后
笔记·算法·leetcode·回溯·递归·n皇后
天赐学c语言4 分钟前
12.16 - 全排列 && C语言中声明和定义的区别
c++·算法·leecode
LYFlied5 分钟前
【每日算法】LeetCode 146. LRU 缓存机制
前端·数据结构·算法·leetcode·缓存
a努力。13 分钟前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
zmzb010315 分钟前
C++课后习题训练记录Day50
开发语言·c++
LYFlied19 分钟前
【每日算法】LeetCode142. 环形链表 II
数据结构·算法·leetcode·链表
超级大只老咪20 分钟前
“和”与“或”逻辑判断与条件取反(Java)
java·算法
LYFlied21 分钟前
【每日算法】LeetCode 23. 合并 K 个升序链表
前端·数据结构·算法·leetcode·链表
xiaoxue..22 分钟前
LeetCode 第 15 题:三数之和
前端·javascript·算法·leetcode·面试
yaoh.wang24 分钟前
力扣(LeetCode) 28: 找出字符串中第一个匹配项的下标 - 解法思
python·程序人生·算法·leetcode·面试·职场和发展·跳槽