【动态规划】【01背包】Leetcode 1049. 最后一块石头的重量 II

news2024/11/22 13:18:22

【动态规划】【01背包】Leetcode 1049. 最后一块石头的重量 II

    • 解法

---------------🎈🎈题目链接🎈🎈-------------------
在这里插入图片描述

解法

😒: 我的代码实现============>

动规五部曲

✒️确定dp数组以及下标的含义

dp[j]表示容量为j的背包,最多可以背最大重量为dp[j]。

✒️确定递推公式

01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
本题则是——dp[j] = max(dp[j], dp[j - stones[i]] + stones[i])

✒️dp数组初始化

初始为0即可

✒️确定遍历顺序

正序遍历物品,倒序遍历背包

最后dp[target]里是容量为target的背包所能背的最大重量。
⭐️那么求dp[sum/2] ,即dp[target]即可!
那么分成两堆石头,一堆石头的总重量是dp[target],另一堆就是sum - dp[target]。

时间复杂度O(N)
空间复杂度O(N)

📘代码

class Solution {
    public int lastStoneWeightII(int[] stones) {
        // 得到总的重量
        int sum = 0;
        for(int stone:stones){
            sum += stone;
        }

// 希望尽可能凑出离total/2近的两组石头  =》 一组离total/2近, 那另一组也一定离total/2近
 // dp[j] : 装满容量为j的背包 能装下的最大重量为dp[j] 
        
        int total = sum/2;
        int[] dp = new int[total+1];

        for(int i = 0 ; i < stones.length; i++){ // 正序遍历物品
            for(int j = total; j>=stones[i]; j--){ // 倒序遍历背包
                dp[j] = Math.max(dp[j] , dp[j-stones[i]]+stones[i]);
            }
        }

        for(int j = 0; j <= total; j++){ // 倒叙遍历背包
            System.out.println(dp[j]);
        }

        return Math.abs(dp[total] - (sum-dp[total]));
    }
}   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Django开发】前后端分离美多商城项目第7篇:登录,使用登录的流程【附代码文档】

美多商城项目4.0文档完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;美多商城&#xff0c;项目准备1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业,5.O2O--线上到线下,6.F2C--工厂到个人。项目准备&#xff0c;配置1. 修改set…

异地两分部子网重复,如何远程更改其中一个分部子网信息

环境: 分部1:子网192.168.1.0/24 分部2:子网192.168.1.0/24 问题描述: 异地两分部子网重复,如何远程更改其中一个分部子网,原本没有问题目前要与总部建ipsec提示冲突无法都建立隧道 解决方案: 先G一下,看看有啥建议 在两个异地分部网络中,如果发现有子网地址出现…

【C++】哈希一

这篇博客要说的是哈希算法&#xff0c;哈希又称为散列&#xff0c;它是将存储的值和存储的位置建立起关联关系的一种算法&#xff0c;或者说是一种将任意长度的数据映射为固定长度的输出的算法。 什么意思呢&#xff1f;我们来看一个例子&#xff1a;比如说我们要存储1&#xf…

[RK3399 Linux] 使用busybox 1.36.1制作rootfs

一、 编译、安装、配置 busybox 1.1 下载源码 根文件系统是根据busybox来制作的。 下载地址:https://busybox.net/downloads/。 这里就以1.36.1版本为例进行编译安装介绍: 注意:编译linux内核与文件系统中的所有程序要使用相同的交叉编译器。 下载完成后解压: mkdir …

三大能力升级!大模型开启智能客服新篇章

当前智能化已成为各行各业加速转型发展的关键词&#xff0c;客户服务领域也不例外&#xff0c;将大语言模型与文档问答结合&#xff0c;不仅能够有效提升知识构建效率&#xff0c;重塑智能客服模式&#xff0c;还将成为企业营销、运营智能化进程中的重要助推力&#xff01; 接…

C语言基础:回顾判断素数

什么是素数&#xff08;也称质数&#xff09;&#xff1f;和合数相对。 其特点是只能被 1 和它本身 整除&#xff0c;无法被其他整数整除。或者公因数只有它自己和1两个数的数 怎么求解素数呢&#xff1f;对于求解质数的方法很多&#xff0c;但是有一种专门求解素数的功能&am…

Pytest接口自动化测试进阶

背景 随着Web应用的发展&#xff0c;越来越多的功能需要用户登录才能使用。而在接口测试中&#xff0c;往往需要模拟用户的登录状态来进行测试。一种常见的做法是通过Cookie来维持用户的登录状态。然而&#xff0c;由于Cookie的有效期限制以及网站的安全策略&#xff0c;如何在…

leetcode每日一题第四十六天

递归解法 class Solution { public:int search(vector<int>& nums, int target) {return midsearch(nums,target,0,nums.size()-1);}int midsearch(vector<int>& nums, int target, int low,int high){if(low < high){int mid (lowhigh) / 2;if(nums[…

别让这6个UI设计雷区毁了你的APP!

一款成功的APP不仅仅取决于其功能性&#xff0c;更取决于用户体验&#xff0c;这其中&#xff0c;UI设计又至关重要。优秀的UI设计能够为用户带来直观、愉悦的交互体验&#xff0c;甚至让用户“一见钟情”&#xff0c;从而大大提高产品吸引力。 然而&#xff0c;有很多设计师在…

.NET Framework安装失败的原因及解决方法

.NET Framework安装失败的原因及解决方法 大家好我是艾西&#xff0c;一个做服务器租用的游戏爱好者兼网络架构系统环境问题网络工具人。在我们平时使用PC安装某些程序会出现.NET Framework缺失的提示&#xff0c;那么也会有很多的小伙伴搞不懂什么原因导致的&#xff0c;这个问…

【C++】unordered 系列关联式容器

文章目录 1. unordered 系列关联式容器2. unordered_map2.1 unordered_map 的文档介绍2.2 unordered_map 的接口说明 3. unordered_set4. 在线 OJ 1. unordered 系列关联式容器 在 C 98 中&#xff0c;STL 提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可…

C/C++进阶/架构师(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)开发学习路线、系统性学习教程

C学习可以划分为几个主要阶段&#xff0c;每个阶段的学习目标和推荐资源都有所不同。下面是一个详细的分阶段学习指南&#xff1a; 入门阶段 学习目标 理解C的基本语法和结构。学习基本数据类型&#xff0c;条件判断&#xff0c;循环等控制结构。掌握函数的使用方法。初步了…

MongoDB副本集部署(windows)

环境准备 本教程演示mongodb4.4 副本集部署&#xff08;一主两从&#xff0c;伪分布式&#xff09; 节点配置主节点localhost:27017从节点1localhost:27018从节点2localhost:27019 每一个节点&#xff08;实例&#xff09;都创建对应的数据文件&#xff08;data&#xff09;…

从零自制docker-9-【管道实现run进程和init进程传参】

文章目录 命令行中输入参数长度过长匿名管道从父进程到子进程传参[]*os.File{}os.NewFile和io.ReadAllexe.LookPathsyscall.Execstrings.Split(msgStr, " ")/bin/ls: cannot access : No such file or directory代码 命令行中输入参数长度过长 用户输入参数过长或包…

acwing2060. 奶牛选美

题目&#xff1a; 代码&#xff1a; //acwing2060. 奶牛选美 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N55; const int dx[]{-1,0,1,0},dy[]{0,-1,0,1}; bool st[N][N]; int point[N][N]; char map[N][…

微信小程序中调取小程序实现报错:提示 开发版小程序已过期,请在开发者工具中重新扫码的 解决方案

出现的问题&#xff1a; 解决方法&#xff1a; 将envVersion: develop,开发版切换为正式版 envVersion: release,wx.navigateToMiniProgram({appId:res.data.appId,path: res.data.prePayTn,extraData: {foo: bar,miniProgramOrgId:res.data.miniProgramOrgId,orderId: res.d…

游标的定义和类型

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 游标的基本概念 游标从字面上理解为游动的光标&#xff0c;可以使用 Excel 表格来想象游标的作用&#xff0c;游标指向每一行&#xff0c;通过游标访问每行数据。 在 Orac…

前端图片详解(最全面、最新)

前言 当我们在做前端性能优化的时候&#xff0c;总是会离不开图片&#xff0c;尤其在首次内容绘制&#xff08;FCP&#xff09;和最大内容绘制 (LCP)中&#xff0c;图片显得格外关键&#xff0c;而我发现关于图片格式的文章&#xff0c;一般不全&#xff0c;或者是偏旧。 所以…

STC89C52学习笔记(十)

STC89C52学习笔记&#xff08;十&#xff09; 综述&#xff1a;本文介绍了DS18B20和单总线协议&#xff0c;以及讲述了如何使用DS18B20测量温度。 一、单总线协议 1.只有一根通讯线&#xff1a;DQ &#xff08;常见的运用单总线的两种设备&#xff1a;DS18B20和DHT11&#…

sectigo ov企业通配符证书

OV通配符SSL证书是Sectigo旗下比较受欢迎的一款数字证书。Sectigo成立时间较长&#xff0c;旗下的数字证书产品可以使用RSA或者ECC等加密算法保护网站传输信息安全&#xff0c;Sectigo旗下的数字证书可以兼容大多数主流浏览器。今天就随SSL盾小编了解Sectigo旗下的OV企业通配符…