2023-12-21 LeetCode每日一题(美丽塔 II)

2023-12-21每日一题

一、题目编号

2866. 美丽塔 II

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。

你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。

如果以下条件满足,我们称这些塔是 美丽 的:

  1. 1 <= heights[i] <= maxHeights[i]
  2. heights 是一个 山脉 数组。

如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山脉 数组:

  • 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]
  • 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]

请你返回满足 美丽塔 要求的方案中,高度和的最大值
示例 1:
在这里插入图片描述

示例 2:
在这里插入图片描述

示例 3:
在这里插入图片描述
提示:

  • 1 <= n == maxHeights <= 105
  • 1 <= maxHeights[i] <= 109

四、解题代码

class Solution {
public:long long maximumSumOfHeights(vector<int>& maxHeights) {int n = maxHeights.size();long long res = 0;vector<long long> prefix(n), suffix(n);stack<int> stack1, stack2;for (int i = 0; i < n; i++) {while (!stack1.empty() && maxHeights[i] < maxHeights[stack1.top()]) {stack1.pop();}if (stack1.empty()) {prefix[i] = (long long)(i + 1) * maxHeights[i];} else {prefix[i] = prefix[stack1.top()] + (long long)(i - stack1.top()) * maxHeights[i];}stack1.emplace(i);}for (int i = n - 1; i >= 0; i--) {while (!stack2.empty() && maxHeights[i] < maxHeights[stack2.top()]) {stack2.pop();}if (stack2.empty()) {suffix[i] = (long long)(n - i) * maxHeights[i];} else {suffix[i] = suffix[stack2.top()] + (long long)(stack2.top() - i) * maxHeights[i];}stack2.emplace(i);res = max(res, prefix[i] + suffix[i] - maxHeights[i]);}return res;}
};

五、解题思路

(1) 单调栈。

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

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

相关文章

linux驱动(一):led

本文主要探讨210的led驱动相关知识。 驱动 操作系统驱动硬件的代码,驱动上层是系统调用API,下层是硬件 宏内核&#xff1a;内核整体上为一个过程实现,运行在同一地址空间,相互调用简单高效 微内核&#xff1a;功能为独立过程,过程间通过IPC通信 …

致最后【个人】

致最后【个人】 前言版权推荐我的大学课程学习致最后感谢鼓励后期规划日星月云留下你想说的话吧最后 前言 现在时间是2023-12-31 12:30:35 我放假回到家的第二天 也是公历2023年的最后一天 写这篇文章&#xff0c;恰好是佳作天成。 以下内容源自《【计算机图像处理】》 仅…

【华为OD机试真题2023CD卷 JAVAJS】测试用例执行计划

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 测试用例执行计划 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 某个产品当前迭代周期内有N个特性()需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用…

在Linux运行LaTeX

共有三个步骤1. 装LaTexTeX Live - TeX Users Group 下载对应版本安装包安装 文件比较大&#xff0c;这步花的时间多一点&#xff0c;不过也不会太多&#xff0c;感觉5分钟十分钟的样子吧 2. 装TexStidio 这一步是安装一个类似在windows系统下的TaTeX GUI软件 图标是这样3. 配置…

Tensorflow2.X的GPU版框架最快最稳搭建方法

一、环境基础 Windows10以上 已装Anaconda 支持GPU 二、搭建步骤 1. 在Anaconda中创建并进入虚拟环境 conda create -n envname python3.8 conda activate envname 注意&#xff1a;envname 替换为你自己想命名的&#xff0c;下文将以“Ljdenv”出现 2.安…

配置打开QT designer

要在PyCharm中配置打开Qt Designer的外部工具&#xff0c;可以遵循以下步骤。这个配置将允许你直接从PyCharm打开Qt Designer&#xff0c;编辑.ui文件。 打开PyCharm的设置: 选择File > Settings&#xff08;在macOS上是PyCharm > Preferences&#xff09;。 导航到外部…

MongoDB聚合管道:$match

$match是聚合管道中最常用的阶段之一&#xff0c;用于过滤管道中的文档&#xff0c;只允许符合条件的文档进入到管道的下一阶段。 语法 {$match:{<query>}}使用举例 创建articles文档&#xff0c;并加入下面的数据 { "_id" : ObjectId("512bc95fe835e…

k近邻算法原理

k近邻算法主要思想 k近邻算法是一种基本的分类与回归方法&#xff0c;其主要思想是基于样本之间的距离进行分类或回归预测。即对未标记样本的类别&#xff0c;由距离其最近的k个邻居投票来决定属于哪个类别。具体而言&#xff0c;k近邻算法将新的样本点与训练数据集中的样本进…

【实用工具】Tmux使用指南

Tmux 三个重要概念 session&#xff08;会话&#xff09;、window&#xff08;窗口&#xff09;、pane&#xff08;面板&#xff09; 一个会话可以有多个窗口&#xff0c;一个窗口可以划分为多个面板 注意在tmux中使用快捷命令的话&#xff0c;需要加上前缀ctrlb 关于session的…

2024 GMF|The Sandbox 为创作者赋能的新时代

以新的 GMF 模型和专门的参与池奖励来开启 2024 年吧。 11 月 3 日&#xff0c;我们在香港全球创作者日上宣布&#xff0c;The Sandbox 已为所有创作者分配了100,000,000 SAND&#xff0c;将通过 GMF 进行分发。作为首次启动的建设者挑战&#xff0c;我们准备了专门的 SAND 参与…

linux 防火墙查看放行端口,追加放行端口命令

linux 查看防火墙已经放行端口列表 firewall-cmd --list-ports 运行结果如下&#xff1a; linux 追加防火墙经放行端口&#xff08;如追加443&#xff09; firewall-cmd --zonepublic --add-port443/tcp --permanent 亲测有效&#xff01;

数据结构 模拟实现LinkedList单向不循环链表

目录 一、链表的简单介绍 二、链表的接口 三、链表的方法实现 &#xff08;1&#xff09;display方法 &#xff08;2&#xff09;size得到单链表的长度方法 &#xff08;3&#xff09;addFirst头插方法 &#xff08;4&#xff09;addLast尾插方法 &#xff08;5&#xf…

美团到店终端从标准化到数字化的演进之路

总第580篇 | 2023年第032篇 本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》。前端团队在产研多角色协同形式上存在不同阶段&#xff0c;而大前端多技术栈在各阶段都有其独特的实践&#xff0c;同时又有类似的演进路线。本文从到店终端团队移动端和前端技术栈持…

Linux学习第48天:Linux USB驱动试验:保持热情,保持节奏,持续学习是作为一个技术人员应有的基本素质和要求

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 最近更新的速度和频率大不如以前&#xff0c;主要原因还是自己有些懈怠了。学习是一个持续努力的过程&#xff0c;一旦中断&#xff0c;再想保持以往的状态可能要…

轻量封装WebGPU渲染系统示例<55>- 顶点数据更新

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/VertexUpdateTest.ts 当前示例运行效果: ​​​​​​​ 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class VertexUpdateTest {pr…

【实用工具】vim常用命令

快速移动(上下左右箭头可替代) 左移 h 右移 l 下移 j 上移 K在本行操作 0 移动到本行行首 ^ 移动到本行的第一个不是 blank 字符 $ 移动到本行行尾 w 光标移动到下一个单词的开头 e 光标移动到下一个单词的结尾跨行移动光标 nG 光标定位到第n行的行首 gg 光标定位到第一行的…

dll不能运行是什么意思,分享5种有效的修复方法

在计算机使用过程中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中一种常见的问题是“dll不能运行”。这个问题可能会影响到我们的正常使用&#xff0c;甚至导致某些软件无法启动。那么&#xff0c;“dll不能运行是什么意思”呢&#xff1f;dll文件丢失怎么恢复&am…

下载大模型,保存阿里云盘

一、解决场景 下载模型或数据集&#xff0c;到国内云GPU平台、阿里云盘&#xff08;便于持久化储存&#xff0c;或者分享朋友&#xff09;。 及时收藏&#xff0c;下次还能找到&#xff01; 二、优势 此方法可以避免大文件下载到本地——占用内存&#xff0c;受到小带宽网络…

STL——常用算术生成算法

注&#xff1a;算术生成算法属于小型算法&#xff0c;使用时包含头文件#include<numeric> 算法简介&#xff1a; accumulate—— // 计算容器元素累计总和fill—— // 向容器中添加元素 1.accumulate 函数原型&#xff1a; accumulate(iterator beg, iterator end, …

西班牙语中关于时间的相关表达-柯桥 外贸西语学习

今天来为大家介绍一下询问时间和被别人询问时间西语相关表达。 如何向他人询问时间&#xff1f; Qu hora es? 几点了&#xff1f; Tienes hora? 你知道时间吗&#xff1f; Me puede decir la hora? 你可以告诉我时间吗&#xff1f; 如何表达时间&#xff1f;我…