OJ练习第82题——填充书架

news2024/11/19 5:39:44

填充书架

力扣链接:1105. 填充书架

题目描述

给定一个数组 books ,其中 books[i] = [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。

按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。

先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelfWidth ),然后再建一层书架。重复这个过程,直到把所有的书都放在书架上。

需要注意的是,在上述过程的每个步骤中,摆放书的顺序与你整理好的顺序相同。

例如,如果这里有 5 本书,那么可能的一种摆放情况是:第一和第二本书放在第一层书架上,第三本书放在第二层书架上,第四和第五本书放在最后一层书架上。
每一层所摆放的书的最大高度就是这一层书架的层高,书架整体的高度为各层高之和。

以这种方式布置书架,返回书架整体可能的最小高度。

示例1

输入:books = [[1,1],[2,3],[2,3],[1,1],[1,1],[1,1],[1,2]], shelfWidth = 4
输出:6
解释:
3 层书架的高度和为 1 + 3 + 2 = 6 。
第 2 本书不必放在第一层书架上。
请添加图片描述

示例2

输入: books = [[1,3],[2,4],[3,2]], shelfWidth = 6
输出: 4
在这里插入图片描述

Java代码

class Solution {
    public int minHeightShelves(int[][] books, int shelfWidth) {

        int[] dp = new int[books.length + 1];
        for (int i = 0; i < books.length; i++) {

            dp[i + 1] = Integer.MAX_VALUE;

            int width = 0, maxHeight = 0;
            for (int j = i; j >= 0; j--) {
                if (shelfWidth < (width += books[j][0])) {
                    break;
                }
                maxHeight = Math.max(maxHeight, books[j][1]);
                dp[i + 1] = Math.min(dp[i + 1], dp[j] + maxHeight);
            }

        }
        return dp[dp.length - 1];

    }
}

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/filling-bookcase-shelves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

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

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

相关文章

Nexus 组件发布失败、npm 登录失败 解决过程

目录 参考发布文章进行打包 提示发布成功&#xff0c;但在 Nexus 里没发现组件 测试 yarn 发布 测试 npm 发布&#xff08;解决登录失败&#xff09; Nexus 设置 Sonatype Nexus Repository Manager 相关权限 参考发布文章进行打包 整体发布&#xff1a;根目录运行 yarn r…

直播软件app开发:如何保证音视频质量?

随着社交媒体的发展&#xff0c;视频直播已成为越来越流行的社交方式。直播软件app开发也因此成为了一个热门话题。在开发直播软件app时&#xff0c;保证音视频质量是至关重要的。本文将介绍如何确保你的直播软件app在音视频质量方面表现出色。 确定音视频质量标准 首先&…

第七章 建造者模式

文章目录 前言一、传统方式解决盖房子需求完整代码抽象房子类 AbstractHouse实现子类 普通房子实现子类 高楼大厦客户端盖房子 二、引入建造者模式建造者模式的四个角色&#xff1a; 产品、抽象建造者、具体建造者、指挥者完整代码House类 (产品角色)抽象父类&#xff08;抽象建…

CV 领域的 ChatGPT?MetaAI 推出“最强”大视觉模型 SAM

出品人&#xff1a;Towhee 技术团队 随着 ChatGPT 引起一波又一波的“GPT热潮”&#xff0c;自然语言领域又一次成为了人工智能的讨论焦点。大家不由得思考&#xff0c;计算机视觉领域里是否会出现这样一个堪称划时代的模型&#xff1f;在这种万众瞩目的时候&#xff0c;一直处…

Python3《机器学习实战》学习笔记(七):支持向量机原理篇之手撕线性SVM

文章目录 一、SVM介绍二、线性SVM2.1 数学建模2.1.1决策面方程2.1.2"分类间隔"方程2.1.3约束条件2.1.4线性SVM优化问题基本描述2.1.5求解准备(讲讲凸函数)2.1.6拉格朗日函数2.1.7KKT条件2.1.8对偶问题求解2.1.9最后求解 2.2 SMO算法 三、代码实战3.1准备数据 一、SVM…

M_Map工具箱简介及地理图形绘制

M_Map工具箱简介及地理图形绘制 1 M_Map简介1.1 具体代码说明 2 地理图形绘制案例2.1 M_Map给定案例2.1.1 M_Map Logo2.1.2 Lambert Conformal Conic projection of North American Topography2.1.3 Stereographic projection of North Polar regions2.1.4 Colourmaps 2.2 案例…

vue封装公共组件库并发布到npm库详细教程

vue组件封装的原理&#xff1a;利用vue框架提供的api: Vue.use( plugin )&#xff0c;我们需要把封装好组件的项目打包成vue库&#xff0c;并提供install方法&#xff0c;然后发布到npm中。Vue.use( plugin )的时候会自动执行插件中的install方法。 一、组件库代码目录 目录…

常见的四种排名函数的用法(sql)

四个排名函数&#xff1a; 1.row_number 2.rank 3.dense_rank 4.ntile 1. ROW_NUMBER&#xff08;排名场景推荐&#xff09; 1.1 介绍 在 SQL 中&#xff0c;ROW_NUMBER() 是一个窗口函数&#xff0c;它为结果集中的每一行分配一个唯一的序号。该函数的语法如下&#xff1a; …

内网渗透之横向移动PTHPTTPTK

0x00前言 pass the hash&#xff08;哈希传递攻击&#xff0c;简称pth&#xff09; pass the ticket&#xff08;票据传递攻击&#xff0c;简称ptt&#xff09; pass the key&#xff08;密钥传递攻击&#xff0c;简称ptk&#xff09; PTH(pass the hash) #利用的lm或ntlm的值…

【社区图书馆】 Go佬—Go程序开发实战宝典书评

文章目录 前言内容介绍文章大致划分总结 前言 《Go 程序开发实战宝典》是一本非常实用的 Go 语言开发工具书&#xff0c;本书由深入浅出的案例讲解、详细的技术实现、贴近实际的应用开发等组成&#xff0c;非常适合 Go 语言开发爱好者、从事相关行业的工程师、技术负责人以及深…

ThinkPHP视图

ThinkPHP视图 前言视图一、运算符二、模版函数三、循环标签四,volist 循环标签五&#xff0c;if 判断标签六&#xff0c;switch 判断标签七、包含文件八、其他标签1. 条件标签2. 比较标签3. 循环标签4. 杂项标签 总结 前言 ThinkPHP视图基本语法和PHP语法非常的像&#xff0c;所…

React Native 9个好用的开发工具盘点

近几年在大前端的开发领域&#xff0c;选择跨端方案的公司和部门越来越多&#xff0c;曾一何时市面有不下10种跨端框架&#xff0c;但随着“生物进化论”的推动&#xff0c;目前市面上仅剩两种主流方案&#xff0c;就是经常听到的 React Native 和 Flutter。去年终于引来了 Rea…

企业网络安全漏洞分析及其解决_kaic

摘要 为了防范网络安全事故的发生,互联网的每个计算机用户、特别是企业网络用户&#xff0c;必须采取足够的安全防护措施&#xff0c;甚至可以说在利益均衡的情况下不惜一切代价。事实上&#xff0c;许多互联网用户、网管及企业老总都知道网络安全的要性&#xff0c;却不知道网…

《JavaEE初阶》多线程进阶

《JavaEE初阶》多线程进阶 文章目录 《JavaEE初阶》多线程进阶常见锁策略乐观锁与悲观锁普通互斥锁与读写锁轻量级锁与重量级锁自旋锁与挂起等待锁公平锁和非公平锁可重入锁和不可重入锁 CAS什么是CASCAS的应用场景:CAS 的 ABA 问题什么是CAS 的 ABA 问题解决方案: synchronize…

libxml2交叉编译和移植

编译后的libxml2如果交叉编译环境一致可以直接使用资源-CSDN文库 嵌入式开发过程中实用libxml2进行xml文件的解析、创建、使用。 这里介绍一下该libxml2的交叉编译过程和移植步骤 下载地址 libxml2 各版本下载地址 ftp://xmlsoft.org/libxml2/ ftp://xmlsoft.org/libxml2…

【汽车电子】5分钟了解汽车操作系统(科普篇)

在智能汽车电动汽车的浪潮下&#xff0c;「软件定义汽车」的理念已经成为很多厂家的共识&#xff0c;未来决定汽车个性化差异的不再是马力大小、座椅材质、底盘软硬等&#xff0c;而应该是人工智能、大数据和云计算技术的综合体。 要想实现这一切&#xff0c;就要给汽车安装一个…

【论文简述】WT-MVSNet: Window-based Transformers forMulti-view Stereo(arxiv 2023)

一、论文简述 1. 第一作者&#xff1a;Jinli Liao、Yikang Ding 2. 发表年份&#xff1a;2023 3. 发表期刊&#xff1a;arxiv 4. 关键词&#xff1a;MVS、3D重建、Transformer、极线、几何约束 5. 探索动机&#xff1a;然而&#xff0c;在没有极几何约束的情况下匹配参考图…

【Java数据结构】二叉树

二叉树 树型结构概念树中的概念树的表现形式 二叉树两种特殊的二叉树二叉树的性质二叉树的存储二叉树基本操作 树型结构 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像…

读论文--Token Merging for Fast Stable Diffusion(用于快速Diffusion模型的tome技术)

摘要 The landscape of image generation has been forever changed by open vocabulary diffusion models. However, at their core these models use transformers, which makes generation slow. Better implementations to increase the throughput of these transformers …

JMeter的使用(一)

JMeter的使用 参考黑马视频 下载工具 一、准备工作 1、准备文件sql SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for sys_follow_user -- ---------------------------- DROP TABLE IF EXISTS sys_follow_user; CR…