力扣【1049. 最后一块石头的重量 II】Java题解(背包问题)

news/2025/1/31 18:01:52 标签: leetcode, java, 算法

让石头分成重量相同的两堆(尽可能相同),相撞之后剩下的石头就是最小的。进一步转化成容量为重量总喝一半的背包最多可以装多少质量的石头。这样就转化成了背包问题。
最后求结果时,我们所最多能装的时dp[target],那另一半石头就是sum-dp[target],我们所求的就是(sum-dp[target])-dp[target],也就是sum-dp[target] * 2。

class Solution {
    public int lastStoneWeightII(int[] stones) {
        int sum = 0;
        for(int num:stones) sum += num;
        int target = sum/2;
        int[] dp = new int[target + 1];
        for(int i=0;i<dp.length;i++){
            dp[i] = 0;
        }
        for(int i=0;i<stones.length;i++){
            for(int j=target;j>=stones[i];j--){
                dp[j] = Math.max(stones[i]+dp[j-stones[i]],dp[j]);
            }
        }
        return sum-dp[target] * 2;
    }
}

题目链接


http://www.niftyadmin.cn/n/5838807.html

相关文章

虚幻基础16:locomotion direction

locomotion locomotion&#xff1a;角色运动系统的总称&#xff1a;包含移动、奔跑、跳跃、转向等。 locomotion direction 玩家输入 玩家输入&#xff1a;通常代表玩家想要的移动方向。 direction 可以计算当前朝向与移动方向的Δ。从而实现朝向与移动(玩家输入)方向的分…

【回溯+剪枝】电话号码的字母组合 括号生成

文章目录 17. 电话号码的字母组合解题思路&#xff1a;回溯 哈希表22. 括号生成解题思路&#xff1a;回溯 剪枝 17. 电话号码的字母组合 17. 电话号码的字母组合 ​ 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 …

水瓶加水时的重心变化,MATLAB计算与可视化

空水瓶的重心靠近中部&#xff0c;水量少时&#xff0c;重心靠下&#xff0c;水满时重心又回到中间了。 本文给出一个用于计算水瓶加水过程中&#xff0c;整体的重心变化情况&#xff0c;并绘制可视化的曲线图、示意图 文章目录 重心高度计算总重心高度计算MATLAB 代码运行结果…

DeepSeek部署教程(基于Ollama)

虽说在过年&#xff0c;但不能忘了学习。这几天科技圈最火的莫过于deepseek&#xff0c;我抽空也学习一下deepseek的部署过程&#xff0c;主要还是因为官方服务已经彻底瘫了[手动狗头]。 1、下载Ollama并安装 https://github.com/ollama/ollama/releases/latest/download/Oll…

MySQL 中的递归查询:实现与优化

在处理层次结构数据&#xff08;如组织架构、分类树、评论回复等&#xff09;时&#xff0c;递归查询是不可或缺的工具。MySQL 8.0 版本引入了对递归公用表表达式&#xff08;Common Table Expressions, CTEs&#xff09;的支持&#xff0c;使得我们可以更加直观和高效地编写递…

数据库备份、主从、集群等配置

数据库备份、主从、集群等配置 1 MySQL1.1 docker安装MySQL1.2 主从复制1.2.1 主节点配置1.2.2 从节点配置1.2.3 创建用于主从同步的用户1.2.4 开启主从同步1.2.4 主从同步验证 1.3 主从切换1.3.1 主节点设置只读&#xff08;在192.168.1.151上操作&#xff09;1.3.2 检查主从数…

level-icmp(ping)详细过程_6

TCP/IP协议栈将地址信息和协议分解标识符相结合, 以决定一个数据报是否被正确接收, 以及哪个实体将会处理该数据报。有几层还会检测数值( 例如校验和) , 以保证内容在传输中没有损坏 1、TCP/lP中的复用、分解和封装 虽然它不是TCP/IP协议族的真实部分, 但我们也能自底向上地说明…

VSCode 设置为中文(Configure Display Language)

VSCode 设置为中文 通过扩展安装中文语言包&#xff0c;点击左侧边栏的【扩展】&#xff0c;搜索并安装 Chinese (Simplified) Language Pack for Visual Studio Code&#xff08;简体中文语言包&#xff09; 安装完成后&#xff0c;按 CtrlShiftP 打开命令面板 输入并选中 Co…