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

力扣刷题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.kler.cn/a/616243.html

相关文章:

  • No spring.config.import property has been defined
  • 改bug制造bug...
  • 我的编程之旅:从零到无限可能
  • git did not exit cleanly (exit code 128)处理方法
  • el-radio-group 中 el-radio-button value未能绑定上数值数据
  • 02 相机标定相关坐标系
  • 页码设置相关问题记录
  • 还款测试案例需要考虑的维度
  • [操作系统,学习记录] 2.进程(1)
  • AnimateCC基础教学:随机抽取获奖名单及奖品-V1.0原型版
  • 利用Claude desktop配置MCP server(第一课)
  • 【软考备考】系统架构案例分析示例(一)
  • 从ChatGPT到AutoGPT——AI Agent的范式迁移
  • c++ vs和g++下的string结构
  • 虚拟现实--->unity学习
  • 21 python __name__ 与 __main__
  • 基于大语言模型的智能音乐创作系统——从推荐到生成
  • 知能行每日刷题
  • Acwing6118 蛋糕游戏
  • 【C++重点】虚函数与多态