代码随想录算法训练营第四十一天|416. 分割等和子集。

416. 分割等和子集

题目链接:分割等和子集

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

解题思路
本题直接套用0-1背包问题确定以下四点
1、背包的体积为sum / 2
2、背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值
3、背包如果正好装满,说明找到了总和为 sum / 2 的子集。
4、背包中每一个元素是不可重复放入。
一、确定dp数组以及下标的含义
01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。
本题中每一个元素的数值既是重量,也是价值。
套到本题,dp[j]表示 背包总容量(所能装的总重量)是j,放进物品后,背的最大重量为dp[j]。
二、确定递推公式
01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
本题,相当于背包里放入数值,那么物品i的重量是nums[i],其价值也是nums[i]。
所以递推公式:dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
三、dp数组如何初始化
在01背包,一维dp如何初始化,已经讲过,
从dp[j]的定义来看,首先dp[0]一定是0。
如果题目给的价值都是正整数那么非0下标都初始化为0就可以了
四、确定遍历顺序
使用一维dp数组,物品遍历的for循环放在外层,遍历背包的for循环放在内层,且内层for循环倒序遍历!
五、举例推导dp数组
在这里插入图片描述

代码实现

class Solution {public boolean canPartition(int[] nums) {int len = nums.length;int sum = 0;for (int num : nums) {sum += num;}if (sum % 2 != 0) {return false;}int target = sum / 2;int[] dp = new int[target + 1];for (int i = 0; i < len; i++) {for (int j = target; j >= nums[i]; j--) {dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i]);}if (dp[target] == target)return true;}return dp[target] == target;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python保存网页为PDF

在互联网时代&#xff0c;网页是我们获取信息的重要来源。然而&#xff0c;有时我们可能希望将特定的网页保存为PDF格式&#xff0c;以便在没有网络连接的情况下查看或分享。Python作为一种强大的编程语言&#xff0c;可以帮助我们实现这一需求。本文将介绍如何使用Python将网页…

数据结构:树形数据结构

1. 树的基本概念 在计算机科学中&#xff0c;树是一种非常重要的数据结构&#xff0c;用于模拟现实世界中的层次关系。它由一组节点和一组连接这些节点的边组成&#xff0c;节点之间的关系是一对多的关系&#xff0c;其中一个节点称为父节点&#xff0c;它下面的节点称为子节点…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

我一直想给自己辩护

哈喽&#xff0c;大家好&#xff0c;我叫人宅&#xff0c;这里特意和大家聊聊关于我的课程问题。 很多学员私下讨论我的课程&#xff0c;太难了&#xff0c;有的甚至准备去报个培训班。即使我们花了那么大精力来做入门引导&#xff0c;还是觉得有难度。 还有课程中有嵌套课程…

欢迎 Gemma: Google 最新推出开源大语言模型

今天&#xff0c;Google 发布了一系列最新的开放式大型语言模型 —— Gemma&#xff01;Google 正在加强其对开源人工智能的支持&#xff0c;我们也非常有幸能够帮助全力支持这次发布&#xff0c;并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型&#xff1a;7B 参数…

ES6中的Map数据结构的键可以是哪些数据类型

Map 的键可以是任何数据类型&#xff0c;包括对象、函数、原始类型等。 1. 原始类型作为键&#xff1a; let primitiveKeyMap new Map(); primitiveKeyMap.set(1, One); // 数字作为键 primitiveKeyMap.set(name, Alice); // 字符串作为键 primitiveKeyMap.set(true, True);…

浅拷贝导致的bug

错误代码&#xff1a; //初始化formTableData的值 const formTableData ref({saleOrderTime:,saleOrderDetails:[] });const showModal async (item) > {//调接口获取后端返回的数据let data (await api.searchSaleOrderById({saleOrderId:item.id})).dataconsole.log(&…

文本处理三驾马车之 sed

sed 是 stream editor 的缩写&#xff0c;中文称之为“流编辑器”。 sed command file command 部分&#xff0c;针对每行要进行的处理file&#xff0c;要处理的文件 Actions d&#xff1a;删除该行p&#xff1a;打印该行i&#xff1a;在行的前面插入新行a&#xff1a;在行的后…

全流程点云机器学习(一)使用CloudCompare自制sharpNet数据集

前言 这不是高支模项目需要嘛&#xff0c;他们用传统算法切那个横杆竖杆流程复杂耗时很长&#xff0c;所以想能不能用机器学习完成这些工作&#xff0c;所以我就来整这个工作了。 工欲善其事&#xff0c;必先利其器&#xff0c;在正式开始之前&#xff0c;我们先要搞懂如何切…

API接口实现自动化数据同步

一、API的核心作用 API是现代电子商务生态系统中不可或缺的组成部分&#xff0c;它使得不同平台和服务之间的数据共享变得可能。通过API&#xff0c;开发者可以访问到商品信息、用户评价、销售数据等&#xff0c;这些数据对于市场分析、库存管理和用户体验优化至关重要。 二、…

每日leetcode--删除有序数组中的重复项

问题描述 给定一个包含重复元素的整数列表nums&#xff0c;我们需要移除其中的重复元素&#xff0c;并返回去重后的列表长度。 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 解决方案&#xff1a; 我们可以使用一个额外的列表来存储不重复的元素&#xff…

Linux 开启防火墙 --- FirewallD is not running 问题修复

问题 在配置SSL认证后&#xff0c;需要放开防火墙的443端口&#xff0c;出现了FirewallD is not running错误 [rootxxx ~]# firewall-cmd --zonepublic --add-port443/tcp --permanent FirewallD is not running解决 只需要开启防火墙即可。 【1】先通过systemctl status fir…

旅游分享系列之:福建旅游攻略

旅游分享系列之&#xff1a;福建旅游攻略 一、漳州1.福建土楼2.云水谣3.四菜一汤景点 二、厦门1.园林博览苑2.海上自行车道3.山海步道4.海滩5.闽南菜6.落日 三、泉州1.衙口沙滩2.海上日出3.珞珈寺4.海滩烟花 一、漳州 游玩2个景点&#xff1a;云水谣&#xff0c;四菜一汤可以住…

基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

QT常用类

五、常用类 QString 字符串类&#xff08;掌握&#xff09; QString是Qt的字符串类&#xff0c;与C的std::string相比&#xff0c; 不再使用ASCII编码。QString使用的是Unicode编码。 QString中每个字符都是一个16位的QChar&#xff0c;而不是8位的char。 QString完全支持中文&…

深入探究node搭建socket服务器

自从上篇中sokect实现了视频通话&#xff0c;但是是使用ws依赖库实现的服务端&#xff0c;所以最近再看ws源码&#xff0c;不看不知道&#xff0c;一看很惊讶。 接下来一点点记录一下&#xff0c;如何搭建一个简易的服务端socket&#xff0c;来实现上次的视频通讯。 搭建一个…

详解AP3216C(三合一sensor: 光照、距离、照射强度)驱动开发

目录 概述 1 认识AP3216C 1.1 AP3216C特性 1.2 AP3216C内部结构 1.3 AP3216C 硬件电路 1.4 AP3216C工作时序 1.4.1 I2C 写数据协议 1.4.2 I2C 读数据协议 1.5 重要的寄存器 1.5.1 系统配置寄存器 1.5.2 和中断相关寄存器 1.5.3 IR数据寄存器 1.5.4 ALS 数据寄存器 …

十二、线性代数二-二次型:

目录 1、二次型的定义: 2、二次矩阵与二次型的理解: 3、二次型矩阵的性质: 4、二次型的标准型: 5、二次型的正定型: ①正定型的概念: ②二次型正定型的判定:

代码随想录算法训练营第59天 | 583.两个字符串的删除操作 + 72.编辑距离 + 编辑距离总结篇

今日任务 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 583.两个字符串的删除操作 - Medium 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以…

tombstone常见崩溃信号说明

一、概念说明 在应用崩溃的时候&#xff0c;我们将会获取到两个信息: signal: 信号量&#xff0c;下文将会详细的说明不同的信号量及其含义。code: 错误码, 除了几个所有信号量(signal) 公共的错误码(code)&#xff0c;一般不同信号量(signal)有特定的错误码(code)&#xff0c;…