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

LeetCode算法题解(动态规划,背包问题)|LeetCode416. 分割等和子集

LeetCode416. 分割等和子集

题目链接:416. 分割等和子集
题目描述:

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 200
  • 1 <= nums[i] <= 100
算法分析:
定义dp数组及下标含义:

dp[i][j]表示0~i中每个元素任取,其总和不大于j的最大值(能够在容量为j的背包里装下的最大值)。

递推公式:

dp[i][j] = max(dp[i-1][j], dp[i-1][j-nums[i]]+nums[i])。

初始化:

子集的总和不会超过原数组总和的一半,所以dp代表值的那个维度长度取其一半即可。

vector<vector<int>>dp(nums.size(), vector<int>(sum + 1, 0));for(int i = nums[0]; i <= sum; i++) {dp[0][i] = nums[0];}
遍历顺序:

元素遍历的for循环在外层,总和值的遍历在内层。

代码如下:

class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;for(int i = 0; i < nums.size(); i++) {sum += nums[i];}if(sum % 2 != 0) return false;sum /= 2;vector<vector<int>>dp(nums.size(), vector<int>(sum + 1, 0));for(int i = nums[0]; i <= sum; i++) {dp[0][i] = nums[0];}for(int i = 1; i < nums.size(); i++) {for(int j = 0; j <= sum; j++) {if(j < nums[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - nums[i]] + nums[i]);if(dp[i][j] == sum) return sum;}}return false;}
};

状态压缩,将二维数组转化成一维数组(内从循环遍历总和值要倒着遍历):

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

总结

对于类似背包的问题,可以将其视为背包问题看待,找准背包容量和物品的对应对象。

相关文章:

LeetCode算法题解(动态规划,背包问题)|LeetCode416. 分割等和子集

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

Java Class 类文件格式看这一篇就够了

本文将揭开Java Class文件的神秘面纱&#xff0c;带你了解Class文件的内部结构&#xff0c;并从Class文件结构的视角告诉你&#xff1a; 为什么Java Class字节码文件可以“写一次&#xff0c;遍地跑”&#xff1f;为什么常量池的计数从1开始&#xff0c;而不是和java等绝大多数…...

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统

『亚马逊云科技产品测评』活动征文&#xff5c;构建生态农场家禽系统 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前…...

[github配置] 远程访问仓库以及问题解决

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…...

mysql5.6 删除用户/ drop user

目录 前言查看用户删除用户删除没有用户名的用户 前言 CentOS5.6.51 MySQL Community Server (GPL)查看MySQL的版本 查看用户 mysql> select Host,User from user; ----------------------- | Host | User | ----------------------- | 10.0.101.112 | root …...

VMware三种网络模式

桥接模式 NAT(网络地址转换模式) Host-Only(仅主机模式) 参考&#xff1a; vmware虚拟机三种网络模式 - 知乎 (zhihu.com)...

Java虚拟机(JVM)的调优技巧和实战2

JVM是Java应用程序的运行环境&#xff0c;它负责管理Java应用程序的内存分配、垃圾收集等重要任务。在JVM的默认设置下&#xff0c;可能存在一些性能问题&#xff0c;因此需要进行调优。在本次分享中&#xff0c;作者将介绍一些实用的JVM实战调优技巧&#xff0c;以提高Java应用…...

2020年下半年试题一:论信息系统项目的成本管理

论文题目 1.概要叙述你参与过的信息系统项目&#xff08;项目的背景、项目规模、发起单位、目的、项目内容、组织结构、项目周期、交付的成果等&#xff09;&#xff0c;并说明你在其中承担的工作&#xff08;项目背景要求本人真实经历&#xff0c;不得抄袭及杜撰&#xff09;。…...

9. 回文数 --力扣 --JAVA

题目 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0…...

ChainLight zkSync Era漏洞揭秘

1. 引言 ChainLight研究人员于2023年9月15日&#xff0c;发现了zkSync Era主网的ZK电路的一个soundness bug&#xff0c;并于2023年9月17日&#xff0c;向Matter Labs团队报告了该问题。Matter Labs团队修复了该问题&#xff0c;并奖励了ChainLight团队5万USDC——为首个zkSync…...

01背包与完全背包学习总结

背包问题分类见下图 参考学习点击&#xff1a;代码随想录01背包讲解 01背包问题&#xff1a; 核心思路&#xff1a; 1、先遍历物品个数&#xff0c;再遍历背包容量。因为容量最先是最大的&#xff0c;往背包里放物品&#xff0c;所以背包容量在慢慢减少&#xff0c;但背包容量…...

基于单片机的公共场所马桶设计(论文+源码)

1.系统设计 本课题为公共场所的马桶设计&#xff0c;其整个系统架构如图2.1所示&#xff0c;其采用STC89C52单片机为核心控制器&#xff0c;结合HC-SR04人体检测模块&#xff0c;压力传感器&#xff0c;LCD1602液晶&#xff0c;蜂鸣器&#xff0c;L298驱动电路等构成整个系统&…...

注解案例:山寨Junit与山寨JPA

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上篇讲了什么是注解&am…...

Codeforces Round 822 (Div. 2)(D前缀和+贪心加血量)

A.选三条相邻的边遍历一次求最小值 #include<bits/stdc.h> using namespace std; const int N 1e610,mod1e97; #define int long long int n,m; vector<int> g[N]; int a[N]; void solve() {cin>>n;int res2e18;for(int i1;i<n;i) cin>>a[i];sort…...

不停的挖掘硬盘的最大潜能

从 NAS 上退休的硬盘被用在了监控的存储上了。 随着硬盘使用寿命的接近尾声&#xff0c;感觉就是从高附加值数据到低附加值数据上。监控数据只会保留那么几个月的时间&#xff0c;很多时候都会被覆盖重新写入。 有人问为什么监控数据不保留几年的&#xff0c;那是因为监控数据…...

Java游戏之飞翔的小鸟

前言 飞翔的小鸟 小游戏 可以作为 java入门阶段的收尾作品 &#xff1b; 需要掌握 面向对象的使用以及了解 多线程&#xff0c;IO流&#xff0c;异常处理&#xff0c;一些java基础等相关知识。一 、游戏分析 1. 分析游戏逻辑 &#xff08;1&#xff09;先让窗口显示出来&#x…...

PostgreSQL (Hologres) 日期生成

PostgreSQL 生成指定日期下一个月的日期 &#xff08;在Hologres中&#xff0c;不支持递归查询&#xff09; SELECTto_char(T, YYYYMMDD)::int4 AS date_int,date(T) AS date_str,date_part(year, T)::int4 AS year_int,date_part(month, T)::int4 AS month_int,date_part(da…...

HCIP-一、RSTP 特性及安全

一、RSTP 特性及安全 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.SW1/2/3是企业内部交换机&#xff0c;如图所示配置各设备名称。 //2.配置VLAN&#xff0c;需求如下&#xff1a; //1&#xff09;SW1/2/3创建vlan10 [SW1]vlan batch 10 [SW2]vlan batch 10 [SW3]vla…...

智能高效的转运机器人,为物流行业注入新动力

在当今社会&#xff0c;随着科技的不断发展&#xff0c;机器人已经逐渐融入到我们的生活中。其中&#xff0c;转运机器人作为物流行业的新秀&#xff0c;正以其高效、智能的特点&#xff0c;引起了广泛的关注。 转运机器人&#xff0c;是指能够自主进行物品搬运和运输的机器人…...

操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁

文章目录 6.经典进程同步问题6.1 生产者-消费者问题 (既有同步又有互斥)6.2 读者-写者问题6.3 哲学家进餐问题6.4理发师问题 7. 进程之间通信7.1 共享存储区7.2 消息传递7.3 管道 8.线程8.1 线程的实现机制 9 进程调度9.1 调度方式9.2 常见算法先来先服务 FCFS短进程优先 SPN最…...

数据结构与算法学习日志12

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言递归暴力递归的特点[231. 2 的幂](https://leetcode.cn/problems/power-of-two/)怎么写出递归&#xff1a;递归实现二分查找总结前言 提示&#xff1a;这里可以…...

单细胞差异分析翻车了?试试用scDEA的Shiny网页工具,5分钟搞定12种方法整合与可视化

零代码玩转单细胞差异分析&#xff1a;scDEA Shiny工具全流程指南 湿实验研究者常面临这样的困境&#xff1a;手握珍贵的单细胞RNA测序数据&#xff0c;却因编程门槛而无法充分挖掘其价值。差异表达分析作为核心环节&#xff0c;直接影响后续机制研究的可靠性&#xff0c;但DE…...

如何通过LLaMA2-Accessory评估确保你的LLM模型质量:完整实践指南

如何通过LLaMA2-Accessory评估确保你的LLM模型质量&#xff1a;完整实践指南 【免费下载链接】LLaMA2-Accessory An Open-source Toolkit for LLM Development 项目地址: https://gitcode.com/gh_mirrors/ll/LLaMA2-Accessory LLaMA2-Accessory作为一款开源的LLM开发工具…...

终极Gin-Admin安全配置指南:JWT认证与RBAC权限的完美组合

终极Gin-Admin安全配置指南&#xff1a;JWT认证与RBAC权限的完美组合 【免费下载链接】gin-admin A lightweight, flexible, elegant and full-featured RBAC scaffolding based on GIN GORM 2.0 Casbin 2.0 Wire DI.基于 Golang Gin GORM 2.0 Casbin 2.0 Wire DI 的轻量…...

Excel插件《成绩统计排名》

《成绩统计排名》升级了一、界面二、功能&#xff0c;如图三、操作方法“哆哆Excel”公众号或视频号中有相关的操作视频&#xff0c;请查找四、下载方法在“哆哆Excel”公众号发消息&#xff1a;“学校成绩统计排名”五、安装方法Excel插件&#xff1a;《成绩统计排名》和《Sch…...

KUKA C2机器人IO配置保姆级教程:从端子接线到示教器设置,一次搞定不报错

KUKA C2机器人IO配置实战指南&#xff1a;从硬件对接到软件调试全解析 在工业自动化现场&#xff0c;KUKA C2机器人作为经典机型至今仍广泛应用于焊接、搬运等场景。而IO配置作为机器人与外围设备通讯的基础环节&#xff0c;往往成为新手工程师的"拦路虎"——看似简单…...

对比直接使用厂商 API 与通过 Taotoken 调用的成本透明度差异

对比直接使用厂商 API 与通过 Taotoken 调用的成本透明度差异 1. 多厂商 API 账单管理的挑战 当个人开发者直接对接多个大模型厂商时&#xff0c;成本管理往往面临显著挑战。每个厂商通常提供独立的控制台和账单系统&#xff0c;开发者需要分别登录不同平台查看使用情况。这种…...

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本 1. 多模型统一接入的价值 对于资源有限的创业团队而言&#xff0c;产品开发过程中往往需要尝试多种大模型能力。传统方式需要为每个供应商单独注册账号、管理多个 API Key&#xff0c;不仅增加运维负担&#xff0c;也难…...

告别虚拟机!在Windows上用VSCode+WSL搞定ArduPilot开发环境(保姆级避坑指南)

在Windows上打造高效ArduPilot开发环境&#xff1a;WSLVSCode全攻略 如果你是一名无人机开发者或嵌入式爱好者&#xff0c;一定对ArduPilot这个开源飞控平台不陌生。但传统的开发环境搭建往往让人望而却步——要么需要安装笨重的虚拟机&#xff0c;要么得切换到Linux系统。现在…...

成本感知贝叶斯优化在交互设备设计中的应用

1. 成本感知贝叶斯优化&#xff1a;交互设备原型设计的效率革命在交互设备原型开发领域&#xff0c;工程师们长期面临一个核心矛盾&#xff1a;如何在有限的预算和时间约束下&#xff0c;快速找到最优设计方案&#xff1f;传统试错法不仅耗时费力&#xff0c;更可能因资源分配不…...