题目

有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]
输出:1
解释:
组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。提示:1 <= stones.length <= 30
1 <= stones[i] <= 1000

代码

class Solution {public int lastStoneWeightII(int [] stones) {int []dp =new int [15001];int sum=0;for(int i=0;i<stones.length;i++) {sum+=stones[i];}int target = sum/2;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-dp[target]-dp[target];}
}

LeetCode 1049. 最后一块石头的重量 II 做题小结相关推荐

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

    1049. 最后一块石头的重量 II 无论按照何种顺序粉碎石头,最后一块石头的重量总是可以表示成 可以这样理解,将所有的石头分为两堆,ki=1的石头是一堆,ki=-1的石头是另一堆,我们的目标就是求上 ...

  2. 153、【动态规划】leetcode ——1049. 最后一块石头的重量 II:滚动数组(C++版本)

    题目描述 原题链接:1049. 最后一块石头的重量 II 解题思路 本题要找的是最小重量,我们可以将石头划分成两个集合,当两个集合的重量越接近时,相减后,可达到的装量就会是最小,此时本题的思路其实就类 ...

  3. 代码随想录刷题|LeetCode 1049. 最后一块石头的重量II 494. 目标和 474.一和零

    目录 1049. 最后一块石头的重量 II 思路 最后一块石头的重量|| 494. 目标和 思路 0.求什么 1.确定dp数组的含义 2.递推公式 3.初始化dp数组 4.遍历顺序 目标和 474.一 ...

  4. LeetCode 1049. 最后一块石头的重量 II(DP)

    1. 题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出任意两块石头,然后将它们一起粉碎. 假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x ...

  5. 2022-2-19 Leetcode 1049.最后一块石头的重量II

    例二分析:26+21-40 = 7 33-31 = 2 7-2 = 5 相当于小块石头集合之后一起去砸大石头. 这道题和最后一块石头的重量I 有什么不同? 例子更复杂了.(虽然不知道复杂在哪里) 这道 ...

  6. 95. Leetcode 1049. 最后一块石头的重量 II (动态规划-背包问题)

    步骤一.确定状态: 确定dp数组及含义 dp[i]表示的是: 背包的容量为i的情况下,所能得到物品的最大值 这里的物品容量和物品价值都是石头的重量 步骤二.推断状态方程: dp[j] = max(dp ...

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

    这个问题可以转化为0-1背包问题,背包的大小为所有石头的重量之和的一半,意思就是找到要求的石头组合重量之和最接近所有石头重量的一半.具体的C++代码如下: class Solution { publi ...

  8. LeetCode:1049.最后一块石头的重量II 494.目标和 474.一和零

    1049.最后一块石头的重量II 题目 有一堆石头,用整数数组 stones 表示.其中 stones[i] 表示第 i 块石头的重量. 每一回合,从中选出任意两块石头,然后将它们一起粉碎.假设石头的 ...

  9. LeetCode刷题day43|1049. 最后一块石头的重量 II、 494. 目标和、474.一和零

    文章目录 一.1049. 最后一块石头的重量 II 二.494. 目标和 三.474.一和零 一.1049. 最后一块石头的重量 II 这道题其实就与"分割子集"一样,就是先将总和 ...

最新文章

  1. 东南大学和山东大学计算机学院,东南大学和山东大学都是985、211哪所综合实力更强些呢?...
  2. 科技/IT:2019 年 Q3 表现最佳和最差的企业
  3. java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统--配置中心服务化和高可用...
  4. 演讲十忌(翻译并制作成PPT)
  5. ARCGIS影像配准教程
  6. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
  7. 修改图片背景_用P图软件将图片背景更改
  8. django模版标签和继承
  9. Concurrent connection limit
  10. 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
  11. 14. model(2)
  12. 手机通讯录html模板,手机通讯录导模板
  13. 机器学习算法——神经网络4(RBF神经网络)
  14. 计算机一级考试考什么呢,计算机一级考试考些什么呢
  15. Android NDK下载(r10~r25) 持续更新
  16. 自动安装L2tp的脚本
  17. 特征选择+++分裂大法好
  18. 选择startup公司的一点经验
  19. 2022双十一最亮投影仪推荐,当贝X3激光投影3200ANSI流明超高亮度
  20. linux nic cpu 10%,cpu – NIC中的描述符概念

热门文章

  1. 火鸟出击主图源码指标
  2. 什么时候会出现user_objects的invalid_2021年的桃花运什么时候会出现
  3. React使用Particles.js粒子动画
  4. WKWebView高度自适应
  5. 顺利完成由mambo迁移到mambors
  6. 【转载】Transformer详解
  7. Axure学习笔记(十五)-类似于某宝商品界面的实现(利用中继器)
  8. python tabula 使用方法_Python tabula py不会读取pd
  9. 【Java基础】Java位运算
  10. python 【raise函数】