当前位置: 首页 > news >正文

LeetCode 416 分割等和子集

题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

示例 1:

输入:nums = [1,5,11,5]
输出:true
解释:数组可以分割成 [1, 5, 5] 和 [11] 。

示例 2:

输入:nums = [1,2,3,5]
输出:false
解释:数组不能分割成两个元素和相等的子集。

思路:

1.dp数组以及下标的含义
dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。
该题中,每一个元素的数值既是重量,也是价值。
那么如果背包容量为target, dp[target]就是装满 背包之后的重量,
所以 当 dp[target] == target 的时候,背包就装满了。
拿输入数组[1, 5, 11, 5],举例, dp[7] 只能等于 6,因为 只能放进 1 和 5。
而dp[6] 就可以等于6了,放进1 和 5,那么dp[6] == 6,说明背包装满了。
2.递推公式
dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
3.dp数组如何初始化
dp[0]一定是0。
如果题目给的价值都是正整数那么非0下标都初始化为0就可以了,如果题目给的价值有负数,
那么非0下标就要初始化为负无穷。
4.遍历顺序
如果使用一维dp数组,物品遍历的for循环放在外层,遍历背包的for循环放在内层,且内层for循环倒序遍历!
5.推导dp数组
dp[j]的数值一定是小于等于j的。
如果dp[j] == j 说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。
容量为j的背包,所背的最大价值为dp[j]
nums数组中既是重量也是价值
如果装满dp[target]这个背包最大价值就是target,那么target就装满了

class Solution {
public:bool track(vector<int>& nums) {int sum = 0;// dp[i]中的i表示背包内总和// 题目中说:每个数组中的元素不会超过 100,数组的大小不会超过 200// 总和不会大于20000,背包最大只需要其中一半,所以10001大小就可以了vector<int> dp(10001,0);for (int i = 0; i < nums.size(); i++) {sum += nums[i];}if (sum % 2 == 1)return false;int target = sum / 2;// 开始 01背包for (int i = 0; i < nums.size(); i++) {for (int j = target; j >= nums[i]; j--) {dp[j] = max(dp[j],dp[j-nums[i]]+nums[i]);}}//如果得到的容量为target的背包,所背的最大价值刚好为target//说明可以实现if (dp[target] == target)return true;return false;}
};int main() {vector<int> nums = { 1, 5, 11, 5 };Solution ss;cout << ss.track(nums) << endl;return 0;
}

相关文章:

LeetCode 416 分割等和子集

题目&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和 …...

韦东山Linux驱动入门实验班(2)hello驱动---驱动层与应用层通讯,以及自动产生设备节点

前言 &#xff08;1&#xff09;学习韦东山老师的Linux&#xff0c;因为他讲的很精简&#xff0c;以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第二个Hello程序。 &#xff08;2&#xff09;注意&#xff0c;请先学习完视频再来看这个教程&#xff01;本文仅供…...

小程序技术,打开跨端管理的思路,提高客户满意度和忠诚度

小程序容器作为跨端管理的有效工具&#xff0c;已经成为越来越多企业的选择。通过小程序容器&#xff0c;企业可以实现跨平台部署&#xff0c;提供一致的用户体验&#xff0c;整合多种渠道实现全渠道协同&#xff0c;进行个性化营销&#xff0c;以及通过数据分析和监控等手段优…...

Jmeter的Content-Type设置方式

今天调Jmeter脚本遇到一个问题&#xff1a;接口的请求体为Body Data时&#xff0c;没有在HTTP信息头管理加Content-Type参数&#xff0c;Content-Type: application/json&#xff0c;导致脚本一直跑不通&#xff0c;报错&#xff0c;一顿排查&#xff0c;才发现是请求头的原因。…...

SQL语法

创建基本表 创建基本表要对表进行命名&#xff0c;定义表的每个列&#xff0c;定义表的完整性约束条件&#xff0c;我们使用CREATE TABLE语句创建基本表 CREATE TABLE <表名> (<列名> <数据类型> [DEEAULT<缺省值>] [列级约束定义], <列名> &l…...

面试题30天打卡-day30

1、如何在 Linux 中查看系统资源使用情况&#xff1f;比如内存、CPU、网络端口。 以下是Linux中一些常用的命令来查看系统资源使用情况&#xff1a; top&#xff1a;实时动态地显示系统的 CPU 使用情况、进程信息、内存占用情况等。可以使用 q 键退出。top命令可以实时显示各…...

learn_C_deep_11 (深刻理解整形提升、左移和右移规则、花括号、++和--操作、表达式匹配:贪心算法)

目录 深刻理解整形提升 左移和右移规则 如何理解"丢弃" 一个问题 0x01<<23 的值是多少 花括号 、--操作 表达式匹配&#xff1a;贪心算法 深刻理解整形提升 #include <stdio.h> int main() {char c 0;printf("sizeof(c): %d\n", sizeo…...

十个高质量工具网站推荐,AI自动抠图换背景,任意背景自动融合

AI 背景更换是一种利用生成式人工智能创建新图像背景的软件工具。与传统方法需要移除原有的背景并更换新的不同&#xff0c;AI背景生成器使用先进的算法生成与前景完美融合的全新背景。这项技术彻底改变了图像编辑的方式&#xff0c;为设计提供了更多的创造自由和灵活性。 特点…...

小红的好数组陡峭值之和

题目如下 这个题我一开始是先生成满足0&#xff0c;1&#xff0c;2的全排列&#xff0c;但是n很大时很快就超出内存限制了&#xff0c;后来想到用动态规划的方法做&#xff0c;这里先分析一下。 n2时&#xff0c;有01&#xff0c;02&#xff0c;10&#xff0c;12&#xff0c;2…...

MySQL中存储具有不定列的数据-EAV模型

当需要在MySQL中存储具有不定列的数据时&#xff0c;一种常见的解决方案是使用EAV&#xff08;Entity-Attribute-Value&#xff09;模型。EAV模型允许灵活地存储不同实体的不同属性&#xff0c;适用于属性数量不确定的情况。本文将介绍如何使用Java和MySQL来实现EAV模型的存储和…...

COM接口规则的存在是有原因的

可能有些人认为接口上的 COM 接口规则没有必要设计的那么严格&#xff0c;但我想说的是&#xff0c;这些规则的存在是有原因的。 假设你在你的产品代码中新增加了版本号为 N 的接口&#xff0c;由于这个接口是内部使用的&#xff0c;没有任何公开文档。所以你可以随意修改它&a…...

并行分布式计算 并行计算性能评测

文章目录 并行分布式计算 并行计算性能评测基本性能指标参数CPU 基本性能指标存储器性能并行与存储开销 加速比性能定律Amdahl 定律Gustafson 定律Sun 和 Ni 定律加速比讨论 可括放性评测标准等效率度量标准等速度度量标准平均延迟度量标准 基准评测程序&#xff08;Benchmark&…...

[网络安全]XSS之Cookie外带攻击姿势及例题详析

[网络安全]XSS之Cookie外带攻击姿势及例题详析 概念姿势及Payload启动HTTP协议 method1启动HTTP协议 method2 例题详析Payload1Payload2window.open 总结 本文仅分享XSS攻击知识&#xff0c;不承担任何法律责任。 本文涉及的软件等请读者自行安装&#xff0c;本文不再赘述。 概…...

Angular之创建项目报错:setTimeout is not defined

零基础的宝们&#xff0c;跟着视频学习Angular中&#xff0c;会教授大家如何创建一个新项目。 但是在操作时就会遇到无法创建的问题。 接下来我们一起来看看&#xff0c;本人Angular起步时卡在家门口的问题。 在已经安装了nodejs的情况下&#xff0c;被建议使用cnpm命令全局安装…...

python实现神经网络之---构建神经元模型1(python3.7)

本文主要要以周志华的机器学习书为蓝本编写 第5章神经网络 5.1python 实现神经元模型 神经网络中最基本的成分是神经元 (neuro且)模型&#xff0c;如下图所示&#xff1a; 1943 年&#xff0c; [McCulloch and Pitts, 1943] 将上述情形抽象为国 5.1所示的简单模型&#xff0c…...

前端面试题 —— JavaScript (三)

一、JavaScript有哪些内置对象 全局的对象&#xff08; global objects &#xff09;或称标准内置对象&#xff0c;不要和 "全局对象&#xff08;global object&#xff09;" 混淆。这里说的全局的对象是说在全局作用域里的对象。全局作用域中的其他对象可以由用户的…...

【openGauss】一键编译openGauss5.0+dolphin,体验新增的mysql兼容特性

脚本 新建一个/opt/onekey-build-og.sh文件&#xff0c;存入以下内容 #!/bin/bash # 环境 centos 7.9 4C 8G (配置越高编译越快&#xff0c;4G内存编译不了&#xff0c;磁盘大概需要14GB) # 安装一些依赖 &#xff08;libaio-devel如果不卸载重装&#xff0c;可能会找不到io_c…...

【LeetCode - 每日一题】1073. 负二进制数相加 (2023.05.18)

1073. 负二进制数相加 题意 基数为 -2 。实现两个 0/1 数组串的加法。 解法 这是一道模拟题。 设 arr1[i] 和 arr2[i] 是数组 arr1 和 arr2 从低到高的第 i 位数。 首先回顾普通的二进制数的相加&#xff0c;从低位开始计算&#xff0c;在计算的同时维护用一个变量 carry…...

软件上线会面临哪些缺陷?这四种你一定很熟悉

上线对任何软件产品来说都是一件大事&#xff0c;确保一切正常并且向用户发布高质量的软件非常重要。劣质、过早、不稳定、难以使用的产品会产生大量经济损失&#xff0c;也可能使用户对品牌本身失去信任。一直以来&#xff0c;我们都说应该测试&#xff0c;应该将缺陷修复到可…...

html监听界面被隐藏或显示

vue相比于小程序和uni-app 显然少了两个有点用的生命周期 onShow 应用被展示 onHide 应用被隐藏 但其实这个 要做其实也很简单 JavaScript中 有对应的visibilitychange事件可以监听 我们Html参考代码如下 <!DOCTYPE html> <html lang"en"> <head>…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...