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

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

最后求结果时,我们所最多能装的时dptarget,那另一半石头就是sum-dptarget,我们所求的就是(sum-dptarget)-dptarget,也就是sum-dptarget * 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;
    }
}

题目链接

相关推荐
m0_5474866616 分钟前
《数据结构与算法》全套PPT课件2026(中国海洋大学)
数据结构·算法
xiaohaiAIgeo20 分钟前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
旖旎夜光26 分钟前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
小强库计算机毕业设计34 分钟前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质44 分钟前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军1 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐1 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫1 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
kisbad2 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
憧憬成为java架构高手的小白2 小时前
langchain4j框架学习
java