当前位置: 首页 > news >正文

力扣刷题1049. 最后一块石头的重量 II

1049. 最后一块石头的重量 II - 力扣(LeetCode)

这一道题是求石子相撞后最小的值,难的是如何把这道题转换为背包,可以把这一堆石子分为两堆,让这两堆的石子重量差值最小,即为每一堆的石子重量为所有石子重量之和除二,这时候就可以转换成背包问题,套用背包模版,然后第一堆的重量即为dp[m][n],第二堆的重量为sum-dp[m][n],那么这两堆的重量在向减,得到的即为最小的重量Math.abs((sum -  dp[m][n]) - dp[m][n])

public int lastStoneWeightII(int[] nums) {
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
        }
        // System.out.println(sum);
        int m = nums.length;
        int n = sum / 2;
        int[][] dp = new int[m + 1][n + 1];
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (nums[i - 1] > j) {
                    //如果放不下当前元素
                    dp[i][j] = dp[i - 1][j];
                } else {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - nums[i - 1]] + nums[i - 1]);
                }
                //System.out.print(dp[i][j] + " ");
            }
            // System.out.println();
        }
        return Math.abs(sum - 2 * dp[m][n]) ;
    }

http://www.dtcms.com/a/98088.html

相关文章:

  • Swiss Dock:免费的在线分子对接工具(支持两种对接算法切换)
  • 信号与系统(郑君里)第一章-绪论 1-23 课后习题解答
  • 基于Java与Go的下一代DDoS防御体系构建实战
  • 图像数据增强教程:为目标检测任务准备数据
  • 基于RFID技术建筑物资材料智能管理解决方案
  • 迭代器与可迭代对象
  • 《汽车理论》第三章作业
  • 电脑ip地址每次开机会换吗?全面解析
  • 蓝桥杯 之 图论基础+并查集
  • 什么是openAPI
  • IDEA如何设置以新窗口打开新项目
  • 基于RK3588的YOLO多线程推理多级硬件加速引擎框架设计(项目总览和加速效果)
  • css属性列举
  • C++ 仿函数详解:让对象像函数一样调用
  • 15届蓝桥JavaB组 前6道题解
  • React(七):Redux
  • 网络安全 - SQL Injection
  • 从24GHz到71GHz:Sivers半导体的广泛频率范围5G毫米波产品解析
  • 全流程剖析需求开发:打造极致贴合用户的产品
  • 如何用Appuploader 快速一键发行苹果IOS开发者账户的开发者证书-发行cer证书以及转换.p12证书-优雅草卓伊凡
  • 洛谷题单1-P5704 【深基2.例6】字母转换-python-流程图重构
  • 【MyBatis】MyBatis 操作数据库(入门)
  • 庙算兵棋推演AI开发初探(6-神经网络开发)
  • prompt_status:5: command not found: wc解决办法
  • 解锁无痕采集的终极奥秘
  • 蓝桥杯省模拟赛 质因数之和
  • C++_STL之vector篇
  • 深入解析 HotSpot 的经典垃圾收集器
  • 鸿蒙项目源码-天气预报app-原创!原创!原创!
  • 通过Appium理解MCP架构