leetcode算法题--划分为k个相等的子集★
原题链接:https://leetcode-cn.com/problems/partition-to-k-equal-sum-subsets/
相关问题:分隔等和子集
递归的方法其实不难想,但是很难写。很容易想到,求出子集的和sum,然后找出是否存在正好k个子集的和都等于sum。这里的比较有技巧的点是,如果需要k个子集,那么建k个桶groups,每个桶都初始化为sum。接着就进入递归,递归传入初始索引pos从0开始,在递归内部对groups进行循环,当索引pos大于nums范围时,说明所有groups都已经被填满了,因为nums的和一定是等于groups的和。
bool canPartitionKSubsets(vector<int>& nums, int k) {int len = nums.size();int sum = accumulate(nums.begin(), nums.end(), 0);if (sum % k == 0){sum /= k;}else{return false;}sort(nums.begin(),nums.end(),greater<int>());vector<int> groups(k,sum);return canSubsets(nums,0,groups);
}bool canSubsets(vector<int>& nums,int pos,vector<int>& groups){if(pos>=nums.size()){ //所有的group都填满了return true;}int len=groups.size();for(int i=0;i<len;i++){//遍历k个groupif(groups[i]-nums[pos]>=0){groups[i]-=nums[pos];//放pos进桶中if(canSubsets(nums,pos+1,groups)){return true;} groups[i]+=nums[pos];//pos不该在桶中,拿出}}return false;
}
leetcode算法题--划分为k个相等的子集★相关推荐
- 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。
题目描述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k ...
- leetcode算法题--最小的k个数
原题链接:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/ vector<int> getLeastNumbers(ve ...
- leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)
题目 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 题解 一上来以为是 dp(想到了左神讲的,将一个数组分成两个尽可能 ...
- LeetCode 698. 划分为k个相等的子集(回溯)
文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, ...
- Leetcode 698. 划分为k个相等的子集 解题思路及C++实现
解题思路: 这是一个典型的深度优先搜索问题.使用一个相同大小的数组visited来记录元素是否被访问过(即是被已被划分到相应的子集中). 每找到一个划分子集,相应对k减一,再继续执行深度优先搜索程序. ...
- 力扣 698. 划分为k个相等的子集
题目 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 ...
- LeetCode算法题-K-diff Pairs in an Array(Java实现)
这是悦乐书的第254次更新,第267篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第121题(顺位题号是532).给定一个整数数组和一个整数k,您需要找到数组中唯一的k- ...
- LeetCode算法题-Reverse Linked List(Java实现)
这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...
- leetcode算法题-- 买卖股票的最佳时机
原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...
最新文章
- 图像识别落地机会最多 腾讯全面输出视觉AI
- IT人的眼睛就是一把尺!
- 《人潮汹涌》的观后感
- php分列显示,【杂谈】PHP数组怎样按键名完成降序分列
- yii和mysql apache_配置Apache,php5,mysql ,以及配置yii框架的简介
- html 全屏显示某个区域,JS实现指定区域的全屏显示功能示例
- Java发送form-data请求实现文件上传
- 股票和基金,哪个适合打工族?
- python网络爬虫学习笔记(二):爬虫基本概述
- java值的传递_Java 8可选–基于值的类使用指南
- Microsfot Office Communicator 聊天记录 外挂
- Spring源码之ApplicationContext(四)功能补充
- js/vue:video 视频播放器
- python录入数据,python处理写入数据教学教程
- markdown编辑器推荐(附官网)
- 大学生如何培育计算机思维,计算机思维下的计算机课程改革思路探索
- 中国黑客生存特写,互联网金钱帝国里的英雄和盗匪
- Android笔记:将布局转换成图片
- 七款简单易用的项目管理平台
- 计算机桌面下方标图,电脑下方怎么设置显示桌面图标
热门文章
- python小游戏编程实例-Python实现的弹球小游戏示例
- python对笔记本电脑的要求-笔记本电脑中多版本python的配置
- php和python哪个好-写后端 Python,nodejs和php哪个更好一些?
- NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
- DeepFaceLab史上最快的环境搭建(虚拟环境)
- jquery ajax跨域asp,jQuery跨域调用Asp.Net Web API
- java工程师的工作时间_Java 工程师真的每天只需工作四小时吗?
- LeetCode 601. Human Traffic of Stadium
- CC++图形图像处理开源库
- Qt中禁止调节窗口大小