leetcode hot 100最后一块石头重量Ⅱ

在这里插入图片描述
在本题中,我们可以知道,是要求最后石头返还的重量,也就是,将整个数组分割成两个子集,求让两个子集的差值最小。这和上一道分割整数集类似,只是需要我们返回差值。所以我们采用动态规划01背包来做,最后将分割的两个子集的差值返回即可。

首先我们明确dp数组的含义,就是dp[j]代表容量为j的背包的价值为dp[j]。

递推公式也类似上一道题,采用一维01背包递推公式即可
dp[j] = Math.max(dp[j],dp[j-weight[i]]+values[i])。

初始化,dp[0] = 0,因为容量为0价值肯定是0,其他位置依旧取最大值可以覆盖即可,那么就取0就可以了。

遍历顺序:01背包一维数组遍历顺序应该先遍历物品,再遍历背包,背包并且要从大往小遍历。

打印数组

我们最后返回的应该是两个部分的差值,也就是dp[target]和sum-dp[target]这两部分的差值,sum-dp[target]一定比dp[target]大,因为dp[target]是sum/2得到的target,除法是向下取整的。

class Solution {public int lastStoneWeightII(int[] stones) {int sum = 0;for (int i : stones) {sum += i;}int target = sum >> 1;//相当于sum/2,因为除法是向下取整,这样比如5/2,结果应该是2,那么剩下的部分是5-5/2=3,则两部分差值就是3-2=1//初始化dp数组int[] dp = new int[target + 1];for (int i = 0; i < stones.length; i++) {//采用倒序for (int j = target; j >= stones[i]; j--) {//两种情况,要么放,要么不放dp[j] = Math.max(dp[j], dp[j - stones[i]] + stones[i]);}}return sum - 2 * dp[target];}
}

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

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

相关文章

VREP/CoppeliaSim调用VortexStudio引擎仿真

本文首发于&#xff1a;CoppeliaSim入门教程14.01&#xff1a;与Vortex Studio交互 打开CoppeliaSim程序 从左下角选择一个机器人 拖拽到三维场景中。 选择一个仿真引擎 点击播放按钮开始仿真。 演示

自建AWS S3存储服务

unsetunset前言unsetunset AWS S3&#xff08;Amazon S3&#xff0c;全名为亚马逊简易存储服务&#xff09;&#xff0c;是亚马逊公司利用其亚马逊网络服务系统所提供的网络在线存储服务。我常用的很多SaaS服务中提供的文件存储功能&#xff0c;底层也都是AWS S3&#xff0c;比…

typescript 交叉类型

交叉类型简介 TypeScript中的交叉类型是指将多个类型合并为一个类型。这使得我们可以将现有的多种类型叠加到一起成为一种类型&#xff0c;它包含了所需的所有类型的特性。 写这篇文章先问大家一个问题,如何让一个对象既有a类型约束,又有b类型约束? 如果你看了我这篇文章types…

Linux环境变量配置文件--《一图胜千言》

这张图是一个关于Linux系统中shell启动时配置文件加载顺序的流程图。图中分为登录shell和非登录shell两种情况&#xff0c;来描述不同配置文件的读取过程。 登录shell&#xff1a; 当用户登录时&#xff0c;会首先检查是否存在/etc/profile文件&#xff0c;如果存在&#xff0c…

震惊!多本IEEE、Springer旗下期刊被剔除?2024年SCI/SSCI期刊目录再次更新!

【SciencePub学术】2024年2月19日&#xff0c;科睿唯安更新了Web of Science核心期刊目录。 继上次SCI期刊目录和SSCI期刊目录更新之后&#xff0c;本次2月更新共有3本期刊发生变动&#xff1a; • SCIE&#xff1a;有1本期刊不再被SCIE期刊目录收录&#xff0c;1本SCIE期刊更…

c#,dotnet, DataMatrix 类型二维码深度识别,OCR,(基于 Halcon)

代码中部分调用的 c 函数参数&#xff0c;具体说明自行研究~&#xff08;我也是参考的其他资源&#xff0c;还没研究透彻&#xff09; 例如&#xff1a;HOperatorSet.GenRectangle2() &#xff0c; 2000, 2000, 0, 2000, 2000 这些数字应该是选取的图片解析范围、尺寸&#xff…

计算机网络-广域通信网

1.广域网概念和分类 什么是广域网&#xff1f; 广域网是指长距离跨地区的各种局域网、计算机、终端互联在一起&#xff0c;组成一个资源共享的通信网络。 广域网分为传统广域网和现代广域网。 传 统 广 域 网公共交换电话网PSTN公共数据网X.25帧中继网FR综合业务数据网ISDN…

C语言——从头开始——深入理解指针(1)

一.内存和地址 我们知道计算上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;是通过地址总线把需要的数据从内存中读取的&#xff0c;后通过数据总线把处理后的数据放回内存中。如下图所示&#xff1a; 计算机把内存划分为⼀个个的内存单元&#xff0c;每…

vue3 element-plus 省市区选择器组件封装

文章目录 前言一、省市区数据源处理二、AreaSelect省市区选择器组件封装三 、页面使用 前言 vue3封装一个省市区选择器组件&#xff0c;通过element-plus Cascader 级联选择器实现&#xff0c;效果如下&#xff1a; 一、省市区数据源处理 data.js var areaList {province_…

力扣OJ题——相交链表

题目&#xff1a;160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 思路一&#xff08;暴力求解&#xff09;&#xff1a; A链表的每个节点依次跟B链表中节点进行…

Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决 一、MySQL数据库主从集群概念 MySQL数据库主从集群是一种高可用性和读写分离的数据库架构&#xff0c;它基于MySQL的复制&#xff08;Replication&#xff09;技术来同步数据。在主…

智慧之眼:数据可视化引领智慧交通革新

在日新月异的科技时代&#xff0c;数据可视化正以惊人的力量助力智慧交通的蓬勃发展。借助数据可视化&#xff0c;我们不仅能够更全面地了解交通状况&#xff0c;还能够在城市交通中实现更加智慧、高效的运行。下面我就以可视化从业者的角度&#xff0c;来简单聊聊这个话题。 首…