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

让石头分成重量相同的两堆(尽可能相同),相撞之后剩下的石头就是最小的。进一步转化成容量为重量总喝一半的背包最多可以装多少质量的石头。这样就转化成了背包问题。

最后求结果时,我们所最多能装的时dp[target],那另一半石头就是sum-dp[target],我们所求的就是(sum-dp[target])-dp[target],也就是sum-dp[target] * 2。

csharp 复制代码
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;
    }
}

题目链接

相关推荐
晴空闲雲23 分钟前
数据结构与算法-树和二叉树-二叉树的存储结构(Binary Tree)
数据结构·算法
珹洺26 分钟前
Java-Spring入门指南(五)Spring自动装配
android·java·spring
帧栈33 分钟前
并发编程原理与实战(二十七)深入剖析synchronized底层基石ObjectMonitor与对象头Mark Word
java
imHanweihu37 分钟前
基于POI-TL实现动态Word模板数据填充(含图表):从需求到落地的完整开发实践
java·onlyoffice·poi-tl
月夕·花晨40 分钟前
Gateway -网关
java·服务器·分布式·后端·spring cloud·微服务·gateway
失散1341 分钟前
分布式专题——6 Redis缓存设计与性能优化
java·redis·分布式·缓存·架构
杏花春雨江南41 分钟前
Spring Cloud Gateway 作为一个独立的服务进行部署吗
java·开发语言
GSDjisidi42 分钟前
东京本社招聘 | 财务负责人 & 多个日本IT岗位(Java/C++/Python/AWS 等),IT营业同步招募
java·开发语言·aws
叫我阿柒啊1 小时前
Java全栈开发面试实战:从基础到微服务的完整技术栈解析
java·spring boot·微服务·前端框架·vue·jwt·全栈开发