首页 > 其他分享 >1049. 最后一块石头的重量 II

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

时间:2023-05-26 14:35:03浏览次数:36  
标签:stones int 1049 石头 II sum 重量 dp

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。

每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0。

> 动态规划


class Solution {
public:
    int lastStoneWeightII(vector<int>& stones) {
        int len = stones.size();
        if(len == 1) return stones[0];
        vector<int> dp(15001,0);
        //求sum
        int sum = 0;
        for(int i = 0; i < len; i++){
            sum += stones[i];
        }
        int target = sum/2;
        for(int i = 0; i < len;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];
    }
};

标签:stones,int,1049,石头,II,sum,重量,dp
From: https://www.cnblogs.com/lihaoxiang/p/17434624.html

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:路径总和 II
    题目:给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点。 示例1:输入:root=[5,4,8,11,null,13,4,7,2,null,null,5,1],targetSum=22输出:[[5,4,11,2],[5,8,4,5]]示例2:输入:root=......
  • Problem B: 时间和日期类(II)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemB:时间和日期类(II)TimeLimit:4Sec  MemoryLimit:128MBSubmit:2673  Solved:1980[Submit][Status][WebBoard]Description设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间......
  • Hello World II - python垂直输出Hello World
    描述垂直输出"HelloWorld",全部代码不超过2行。 输入无输出Hello Worldstr="HelloWorld"fornameinstr[:]:print(name)修改:开始没看到要求不超过两行,正确代码为:fornamein"HelloWorld":print(name)题目来源:python123.io......
  • 【编码】ASCII,GBK,UTF-8
    ASCII码128个字符,二进制编码都以0开头   GBK编码占2个字节,二进制编码以1开头1xxxxxxxxxxxxxxx  UTF-8可变长编码方案英文、数字占1个字节,汉字占3个字节  ASCII码编码0xxxxxxx2字节的汉字开头必须110xxxxx10xxxxxx3字节的汉字开头必须1110xxxx......
  • 剑指 Offer 56 - II. 数组中数字出现的次数 II
    题目描述:在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。   int[]counts=newint[32];for(inti=0;i<nums.length;i++){for(intj=0;j<32;j++){counts[j]+=nums[i]&1;//更新......
  • 剑指 Offer II 018(Java). 有效的回文(简单)
    题目:给定一个字符串s,验证s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。本题中,将空字符串定义为有效的 回文串 。 示例1:输入:s="Aman,aplan,acanal:Panama"输出:true解释:"amanaplanacanalpanama"是回文串示例2:输入:s="raceacar"......
  • 修改arm板开机logo,ppm转换需要用ascii而不是rawbits binary
    网上在线转ppm格式不好用,转出来的是rawbits的二进制格式,PPM编码(ASCII或binary),关于图片格式编码参见此处我需要ascii编码sudoapt-getinstallnetpbm        $bmptoppmpic.bmp>temp1.ppm//生成ppm        $ppmquant224temp1.ppm>temp2.ppm//转换成2......
  • 不同路径 II(数组、动态规划)、同构字符串(哈希表、字符串)、颠倒二进制位(位运算、分
    不同路径II(数组、动态规划)一个机器人位于一个_mxn_网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网......
  • 关于 使用 diif 对文件夹进行打补丁。
    问题: 我对源码进行了修改,想要生成补丁文件。网上的截图:      我的实际操作:  ......
  • 链表应用 III
    目录链表应用应用1:Leetocde.21题目分析代码实现方法一:迭代实现方法一:递归实现应用2:Leetocde.23题目分析方法一:分治方法二:优先级队列代码实现方法一:分治方法二:优先级队列应用3:Leetocde.141题目分析代码实现应用4:Leetocde.142题目分析代码实现应用5:Leetocde.876题目分析代码实现应用......