Leetcode 698 Partition to K Equal Sum Subsets
题意
给一个数组,要求把数组里的元素分成k个子集,满足每个子集中数的总和是相等的。问是否能分成k个子集
题目链接
https://leetcode.com/problems/partition-to-k-equal-sum-subsets/description/
思考
想象你有k个桶,然后你有n个小球,你要做的是把这n个小球放进k个桶里,问能不能放成
最暴力的办法就是遍历所有的球,看看第一个桶能不能放,第二个桶能不能放。。。以此类推
题解
这k个子集每个子集的元素和假设为a。用dfs遍历,从第一个数字开始判断他应该放在哪个子集中。当当前子集的值小于等于需要的值的时候我们可以放,并且回溯。当最后一个数字被放入并且每个桶的元素和都能够满足为a时,那么就说明能够分成k份。
剪枝:1. 可以从大到小排序,这样可以先放大的数字,子集会更早达到元素和a
2. 当有两个子集的元素和相同时,我们只需要遍历一个子集就好
3. 当有子集的元素和已经满足为a,可以跳过
class Solution {
public:bool canPartitionKSubsets(vector<int>& nums, int k) {int sum = 0;vector<int> b(k, 0);for(int i = 0; i < nums.size(); i++) {sum += nums[i];}if(sum % k != 0) {return false;} int a = sum / k;sort(nums.begin(), nums.end(), greater<int>());return dfs(0, nums, b, a);}bool dfs(int u, vector<int>& nums, vector<int> b, int a) {if( u == nums.size()) {for(int i = 0; i < b.size(); i++) {if (b[i] != a) {return false;}}return true;}for(int i = 0; i < b.size(); i++) {if(i && b[i] == b[i-1]) {continue;}if(b[i] == a) {continue;}if(b[i] + nums[u] <= a) {b[i] += nums[u];if(dfs(u+1, nums, b, a)) {return true;}b[i] -= nums[u];}}return false;}
};
时间复杂度: O ( k n ) O(k^n) O(kn)指数级
空间复杂度: O ( k ) O(k) O(k)
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Leetcode 698 Partition to K Equal Sum Subsets
题意 给一个数组,要求把数组里的元素分成k个子集,满足每个子集中数的总和是相等的。问是否能分成k个子集 题目链接 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/description/ 思考 想象你有k个桶,然后你有n个小球&…...
![](https://i-blog.csdnimg.cn/img_convert/04b8ae2d373626634d0606f24ef14dba.png)
可靠的人形探测,未完待续(III)
一不小心,此去经年啊。问大家新年快乐! 那,最近在研究毫米波雷达模块嘛,期望用在后续的产品中,正好看到瑞萨的活动送板子,手一下没忍住。 拿了板子就得干活咯,我一路火花带闪电,开整…...
![](https://www.ngui.cc/images/no-images.jpg)
Git文件夹提交错了,怎么撤销?
最近提交了一些不应该提交的文件夹到git中,现在需要移除它们,现在简单记录一下操作日志: 情况一 文件夹已经被添加到 Git,但未提交 如果文件夹已经被 git add 添加到暂存区中,但尚未提交,你可以使用以下命令将其从暂存区中移除: git rm -r …...
![](https://i-blog.csdnimg.cn/direct/5a9dde925810495699042595926a55fc.png)
小程序textarea组件键盘弹起会遮挡住输入框
<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡: 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…...
![](https://www.ngui.cc/images/no-images.jpg)
Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例
Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例 1.代码在/kernel-5.10文件夹下 2.在kernel-5.10目录下执行如下命令编译 : 编译之前,需要将 clang 导出到 PATH 环境变量: 如果是 Android12 执行下面这条命令 export PATH../pr…...
![](https://i-blog.csdnimg.cn/direct/29eacd711dc64a278b6934b3568ad2b9.png)
qt 窗口(window/widget)绘制/渲染顺序 QPainter QPaintDevice Qpainter渲染 失效 无效
qt窗体布局 窗体渲染过程 qt中窗体渲染逻辑顺序为 本窗体->子窗体/控件 递归,也就是说先渲染父窗体再渲染子窗体。其中子窗体按加入时的先后顺序进行渲染。通过下方的函数调用堆栈可以看出窗体都是在widget组件源码的widgetprivate::drawwidget中进行渲染的&am…...
![](https://i-blog.csdnimg.cn/direct/c68e5a01c0ab4c52ba104f8d55e35c90.png)
Ubuntu下载时不显示无线网图标并显示Cable unplugged
我用的是ubuntu22-04-5.iso一下载出来发现无法连接网络甚至直接显示Wired是Cable unplugged. 下面是解决方法: step1: step2:点击编辑中的虚拟网络编辑器 step3: step4: step5: step6:取消勾选自动检测可用的DNS服务器 step7:在window上按下winR输入c…...
![](https://img-blog.csdnimg.cn/direct/135b53b5f5c443c28858992462ee4c98.gif#pic_center)
微信小程序实现人脸识别登录
hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…...
![](https://www.ngui.cc/images/no-images.jpg)
atoi函数的概念和使用案例
atoi 函数是 C 语言标准库中的一个函数,它用于将字符串转换为整数。atoi 的名称是 “ASCII to integer” 的缩写。该函数定义在 <stdlib.h> 头文件中。 概念 atoi 函数会从字符串的开始位置开始转换,直到遇到第一个非数字字符或遇到字符串结束符…...
![](https://i-blog.csdnimg.cn/direct/4a2ed23cbb4c4b5cbd4458be492590f7.png)
Mysql--运维篇--日志管理(连接层,SQL层,存储引擎层,文件存储层)
MySQL提供了多种日志类型,用于记录不同的活动和事件。这些日志对于数据库的管理、故障排除、性能优化和安全审计非常重要。 一、错误日志 (Error Log) 作用: 记录MySQL服务器启动、运行和停止期间遇到的问题和错误信息。 查看: 默认情况下…...
![](https://i-blog.csdnimg.cn/direct/346ad93737b343858a976c02373e11e5.png)
poi处理多选框进行勾选操作下载word以及多word文件压缩
一、场景 将数据导出word后且实现动态勾选复选框操作 eg: word模板 导出后效果(根据数据动态勾选复选框) 二、解决方案及涉及技术 ① 使用poi提供的库进行处理(poi官方文档) ② 涉及依赖 <!-- excel工具 --><depen…...
![](https://www.ngui.cc/images/no-images.jpg)
QT 键值对集合QMap
在QT中,可以使用QMap作为键值对的集合。QMap是Qt的一个模板类,它存储了键值对,并且可以通过键来快速查找值。 导入 #include <QMap> 以下是一些使用QMap的方法: 1.创建并初始化一个 QMap<int, QString> UserDepa…...
![](https://www.ngui.cc/images/no-images.jpg)
NetMQ里Push-Pull模式,消息隔一收一问题小记
问题: 本机环境下,在push端向pull端发送消息的过程中,发现同一个进程里的pusher和puller代码,可以准确地完成收发; 然而,将代码放在两个进程里,将pusher发送的消息从1计数,puller端竟…...
![](https://www.ngui.cc/images/no-images.jpg)
见微知著:Tripo 开创 3D 生成新时代
关于 VAST VAST 成⽴于 2023 年 3 ⽉,是⼀家致⼒于通⽤ 3D 大模型研发的 AI 公司,公司⽬标是通过打造⼤众级别的 3D 内容创作⼯具,建⽴ 3D 的 UGC 内容平台,让基于 3D 的空间成为⽤户体验、内容表达、提升新质⽣产⼒的关键要素。 2024 年初,VAST 推出数⼗亿参数级别的 3…...
![](https://www.ngui.cc/images/no-images.jpg)
消息队列与中间件:Java的秘密传输带
消息队列与中间件技术是分布式系统中的重要组件,它们主要解决应用耦合、异步消息处理、流量削峰等问题,并实现高性能、高可用、可伸缩和最终一致性的架构。 2.1 消息队列的基本概念 消息队列是一种应用程序间传递消息的技术,它允许应用程序发…...
![](https://i-blog.csdnimg.cn/direct/210427a20b09485ab29a9e667a5fffbf.webp#pic_center)
Bytebase 3.1.0 - 通过 Google / GitHub SSO 功能开放给专业版
🚀 新功能 支持在 PostgreSQL DML/DDL 工单中选择执行角色。 在项目设置中增加 PostgreSQL 数据库租户模式配置选项。 在数据库页面和 SQL 编辑器为 ORACLE 数据库展示 package 元数据。 支持为环境配置颜色,方便区分。 新增管理员可关闭数据导出…...
![](https://i-blog.csdnimg.cn/img_convert/11242184881f4510ab7113a687105f0d.png)
EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施
靶场搭建 当我们考虑到攻击他人服务器属于违法行为时,我们需要思考如何更好地保护我们自己的服务器。为了测试和学习,我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料,供大家学习和参考࿰…...
![](https://i-blog.csdnimg.cn/direct/ea8d1b258d3847ce8673fedd778bba6e.png)
k8s部署rocketmq踩坑笔记
给团队部署一个rocketmq4.8.0. k8s上部署的broker,注册到nameserver上是自己的pod ip,导致本机连接到的broker的pod ip,这个ip k8s集群外的机器是无法联通的。 nameserver上注册的是这个pod ipv4 尝试将broker的配置brokerIP1修改为注册到na…...
![](https://www.ngui.cc/images/no-images.jpg)
Docker 通过创建Dockerfile 部署Jar包
1、创建Dockerfile 首先确保centos 安装docker,参考docker安装-CSDN博客 自己找个目录来存放Dockerfile mkdir Dockerfile 2、vim Dockerfile # 使用 OpenJDK 17 基础镜像 FROM jre17:v1.0# 设置工作目录 WORKDIR /app# 暴露端口 EXPOSE 8093# 设置容器内日志目录…...
![](https://i-blog.csdnimg.cn/direct/c1847b87c57a40debfbfcdc5ee9c8314.png)
shell脚本练习
题目 1、编写一个shell 脚本,检测 /tmp/size.log 文件。如果存在,显示它的内容;不存在则创建一个文件,将创建时间写入。 2、编写一个shell 脚本,实现批量添加 20个用户,用户名为user1-20,密码为user 后面跟…...
![](https://i-blog.csdnimg.cn/blog_migrate/c6909aecbcc13d601e65c093ad0ee5d7.gif)
【计算机网络】lab4 Ipv4(IPV4的研究)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
![](https://www.ngui.cc/images/no-images.jpg)
Python Json格式数据处理
示例:查看和编辑 JSON 文件的 Python 程序 import json from pprint import pprintdef load_json(file_path):"""加载并解析 JSON 文件。:param file_path: JSON 文件路径:return: 解析后的 JSON 对象(字典或列表)"&quo…...
![](https://i-blog.csdnimg.cn/direct/1222598d2d0a4eaea5365900280db194.png)
【声音场景分类--论文阅读】
1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段,主要重点是建立一…...
![](https://i-blog.csdnimg.cn/direct/f5058643e4c84aad9413a01ca68ad328.png)
Web前端界面开发
前沿:介绍自适应和响应式布局 自适应布局:-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果,随着我们的屏幕大小而发生适配的效果(类似等比例) 如:rem适配 和 vw/vh适配 …...
![](https://i-blog.csdnimg.cn/direct/bc00bdfe01e94960aba72176dbee82e2.png)
模式识别与机器学习
文章目录 考试题型零、简介1.自学内容(1)机器学习(2)机器学习和统计学中常见的流程(3)导数 vs 梯度(4)KL散度(5)凸优化问题 2.基本概念3.典型的机器学习系统4.前沿研究方向举例 一、逻辑回归1.线性回归2.逻辑回归3.随堂练习 二、贝叶斯学习基础1.贝叶斯公式2.贝叶斯决策3.分类器…...
![](https://i-blog.csdnimg.cn/direct/35caad918bc2490ebd250576aeab5e98.png)
eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
ACL实验(Access Control List访问控制列表)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...
![](https://i-blog.csdnimg.cn/direct/24874a2b441e4f09bbf2b9e4ae6132bb.png)
STM32 I2C硬件配置库函数
单片机学习! 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…...
![](https://i-blog.csdnimg.cn/direct/4c8723ca6e0b4eea86a8c4fbcce8e1dc.png)
特制一个自己的UI库,只用CSS、图标、emoji图 第二版
图: 代码: index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…...
![](https://www.ngui.cc/images/no-images.jpg)
Hologres 介绍
Hologres 是 阿里云 提供的一款 实时数据分析平台,它结合了数据仓库(Data Warehouse)和流式计算(Stream Processing)的优势,专为大规模数据分析和实时数据处理而设计。Hologres 基于 PostgreSQL 构建&#…...
![](https://i-blog.csdnimg.cn/direct/aa563fd3ddc64903aebc00e72fbb91d7.png)
oracle闪回表
文章目录 闪回表案例1:(未清理回收站时的闪回表--成功)案例2(清理回收站时的闪回表--失败)案例3:彻底删除表(不经过回收站--失败)案例4:闪回表之后重新命名新表总结1、删…...
![](/images/no-images.jpg)
唐山网站建设哪家优惠/google搜索引擎入口网址
原文发布时间为:2008-12-08 —— 来源于本人的百度文章 [由搬家工具导入]http://u.youku.com/user_video/uid_happyboy27.html优酷网。。转载于:https://www.cnblogs.com/handboy/p/7148493.html...
![](https://img-blog.csdnimg.cn/20191116123108546.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MjE1MzE1,size_16,color_FFFFFF,t_70)
做公众号推送的网站/软文推广发布
Web of Science 1.记录表 字段含义FN文件名VR版本号PT出版物类型(J期刊;B书籍;S丛书;P专利)UTBIOSIS 入藏号DT文献类型LT文献类型PL专利分类号TI文献标题FT原语种标题AU作者CA团体作者BA书籍作者BE编者SO来源出版物S…...
![](/images/no-images.jpg)
宝鸡做网站的/网站关键词查询
// //TITLE: // 预编译指令与相关宏小结 //AUTHOR: // norains //DATE: // Saturday 10-December-2007 //Environment: // EVC4.0 Windows CE 5.0 Standard SDK // 1.预编译指令 01) # 空指令,无任何效果 02) #include 包含一个源代码文件 03) #define 定义宏 04) …...
![](/images/no-images.jpg)
苏州微网站建设/企业为何选择网站推广外包?
参考《导弹飞行力学》 对部分参数的解释: dx/dtf(t,x): 之前一直看不懂f(t,x)到底指的哪个式子,其实在开头就提出来了,f是dy K2△t*f(tk△t/2,xk1/2*K1):t在导弹飞行力学,是y(0)(M中是1),所…...
![](/images/no-images.jpg)
团结湖网站建设/南京seo整站优化技术
静态绑定和动态绑定是C多态性的一种特性。 1、对象的静态类型和动态类型: 对象的静态类型:对象在声明是采用的类型,在编译期确定; 对象的动态类型:当前对象所指的类型,在运行期决定,对象的动态类…...
![](http://www.myloadtest.com/resources/google-trends-new-relic-vs-appdynamics.png)
成都网站建设scwbo/陕西网站设计
前: New Relic的上市使得IT和资本界开始重新重视APM,当然跟传统APM相比,New Relic还是有相当的创新,另外还有一点是目前的创业潮导致的企业级需求增大。 In recent years, IT projects seem to have stopped asking “which APM s…...