leetcode 1049. 最后一块石头的重量 II

2023.8.13

分割等和子集类似,可以转化为0-1背包问题。 本题也是需要将数组元素分成两堆,区别在于本题需要使这两堆的差值最小,而之前那题是需要两堆差值为0。

使用之前的一维dp数组的思路,代码如下:

cpp 复制代码
class Solution {
public:
    int lastStoneWeightII(vector<int>& stones) {
        int sum = 0;
        for(int i=0; i<stones.size(); i++)
        {
            sum += stones[i];
        }
        int target = sum / 2;
        vector<int> dp(target + 1);
        for(int i=0; i<stones.size(); i++)
        {
            for(int j=target; j>=stones[i]; j--)
            {
                dp[j] = max(dp[j],dp[j-stones[i]]+stones[i]);
            }
        }
        return sum-dp[target]-dp[target];
    }
};
相关推荐
3秒一个大11 小时前
深入理解 JS 中的栈与堆:从内存模型到数据结构,再谈内存泄漏
前端·javascript·数据结构
xiaoyaohou1111 小时前
003、轻量化改进(一):网络剪枝原理与实战
算法·机器学习·剪枝
我是章汕呐12 小时前
政策评估的“黄金标准”:DID模型从原理到Stata实操
大数据·人工智能·经验分享·算法·回归
念恒1230612 小时前
Linux初识
linux·服务器·c++
2301_8227032012 小时前
光影进度条:鸿蒙Flutter实现动态光影效果的进度条
算法·flutter·华为·信息可视化·开源·harmonyos
人道领域12 小时前
【LeetCode刷题日记】383 赎金信
算法·leetcode·职场和发展
炽烈小老头12 小时前
【每天学习一点算法 2026/04/11】Pow(x, n)
学习·算法
旖-旎12 小时前
哈希表(存在重复元素)(3)
数据结构·c++·学习·算法·leetcode·散列表
明月醉窗台12 小时前
[jetson] AGX Xavier 安装Ubuntu18.04及jetpack4.5
人工智能·算法·nvidia·cuda·jetson
计算机安禾12 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code