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 (bucketi != target) {

return false;

}

}

return true;

}

//穷举numsindex选择的桶

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

if(bucketi+numsindex>target){

continue;

}

bucketi+=numsindex;

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

return true;

}

bucketi-=numsindex;

}

return false;

}

};

会超时

相关推荐
小O的算法实验室3 小时前
IEEE TASE,基于MPC的多无人机协同搜索竞争群体优化方法
算法
小飞学编程...3 小时前
【哈希表】
数据结构·哈希算法·散列表
码匠许师傅3 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
Tbisnic4 小时前
BGE-M3 算法详解:从模型架构到三种检索方式的数学原理
算法·自然语言处理·大模型·bert·transformer·注意力机制
Brilliantwxx4 小时前
【算法从零到千】【55-58】哈希位图+常见数学运算 接口
算法
空堂与归5 小时前
用户分群找不到规律?用K-Means聚类算法自动发现数据模式
算法·机器学习·kmeans·聚类
动词ing5 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习6 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
一只小小的芙厨6 小时前
基础数论总结
笔记·学习·算法
动词ing7 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构