MarsCode青训营打卡Day1(2025年1月14日)|稀土掘金-16.最大矩形面积问题

server/2025/1/19 2:10:03/

资源引用:

最大矩形面积问题 - MarsCode

打卡小记录:

今天是开营第一天,和小伙伴们组成了8人的团队,在接下来的数十天里相互监督,打卡刷题!

稀土掘金-16.最大矩形面积问题(16.最大矩形面积问题)

题目分析:

这是一道双指针问题。

给定一个有n个元素的array数组,其中的每一个元素都代表一个高度。

现要求从array数组中任意选取k个相邻元素,定义它们所形成的最大矩形面积R(k) = k * min(k个元素)。

题目重点:

用双指针法,由于k是任意的不大于n的正整数,则需要遍历的对象就是该array数组的全部连续子数组,利用左右指针确定子数组的边界。

解题思路:

  • 初始化最大值res用于记录最大的R(k)
  • 初始化左右指针left和right作为连续子数组的左右边界(若使用Arrays.copyOfRange方法,注意左闭右开)。
  • 使用双指针法遍历array数组的全部连续子数组,并计算每一个连续子数组的R(k)值,和当前的最大值res比较并更新res
    • 为计算每一个连续子数组的R(k)值,还需知道当前连续子数组中的最小元素,为此还需增加一个minHeight变量用于记录最小元素
    • 增加一个Rk用于计算当前连续子数组的R(k)
  • 最终返回res
java">public class Main {public static int solution(int n, int[] array) {int res = 0;for (int left = 0; left < n; left++) {int minHeight = array[left];// 记录当前子数组的最小元素int Rk = 1 * minHeight;/* 记录当前子数组的R(k) */ res = Rk > res ? Rk : res;for (int right = left + 1; right < n; right++) {minHeight = array[right] < minHeight ? array[right] : minHeight;// 更新最小元素Rk = (right - left + 1) * minHeight;// 计算当前子数组的R(k)res = Rk > res ? Rk : res;}}return res;}public static void main(String[] args) {System.out.println(solution(5, new int[]{1, 2, 3, 4, 5}) == 9);}
}

http://www.ppmy.cn/server/159512.html

相关文章

Ubuntu 文件夹用途

Ubuntu 文件夹用途 bin: 存放可执行文件&#xff0c;包括系统命令和应用程序。boot: 包含启动相关的文件&#xff0c;如内核和引导加载器。cdrom: 用于挂载CD-ROM驱动器。dev: 包含设备文件&#xff0c;代表系统中的硬件设备。etc: 存放系统配置文件。 /etc/passwd: 存储用户账…

Spring boot 集成分布式定时任务

Spring boot 集成分布式定时任务 定义及作用 在分布式定时任务中&#xff0c;需要一种机制来确保同一任务在不同的服务实例中不会同时执行&#xff0c;这就是分布式定时任务锁的作用。 集成 引入相关依赖 <!--shedlock--><dependency><groupId>net.java…

【数据结构】线性表-单链表

线性表-单链表 顺序表链表存储结构单链表初始化插入数据头插法尾插法在指定位置插入数据 遍历链表删除节点获取链表长度释放链表 顺序表 上一篇文章 链表介绍&#xff1a; 线性表链式存储结构的特点是&#xff1a;用一组任意的存储单元存储线性表的数据元素(这组存储单元可以…

如何在亚马逊云科技上大幅降低无服务器网页应用冷启动时间(上篇)

背景 我们在云端搭建无服务器&#xff08;serverless&#xff09;开发架构时&#xff0c;经常会被冷启动&#xff08;cold start&#xff09;带来的应用延迟所困扰。冷启动是指当无服务器资源在一段时间内未被调用&#xff0c;或需要扩展以处理新请求时&#xff0c;系统需要初…

Tabby - 开源的自托管 AI 编码助手

Tabby 是一个开源的自托管 AI 编码助手。使用 Tabby&#xff0c;每个团队都可以轻松设置自己的 LLM 驱动的代码完成服务器。独立式&#xff0c;无需 DBMS 或云服务。OpenAPI 接口&#xff0c;易于与现有基础设施&#xff08;例如 Cloud IDE&#xff09;集成。 支持消费级 GPU。…

vue编写一个可拖动的模块,并可以和任何其他组件组合使用

实现思路&#xff1a; 使用 Vue 的自定义指令&#xff08;directive&#xff09;来处理拖动逻辑。在 mounted 钩子中添加鼠标事件监听器&#xff0c;以实现拖动功能。在 unmounted 钩子中移除鼠标事件监听器&#xff0c;防止内存泄漏。 代码示例&#xff1a; <template&g…

前端小知识 鼠标穿透 pointer-events: none;

为什么会说到这个呢&#xff1f;是我觉得没有识别出来&#xff0c;然后就导致了这样的问题&#xff0c;这种情况不应该发生。我写了如下这样一段代码&#xff0c;但是发现当自己选择时间的时候无法选择。然后就发现变成了光标在闪烁。这样其实就是因为我选择到了这个input框的鼠…

STM32--定时器输出pwm知识点_stm32 pwm-CSDN博客

1. 选择TIM_OCMode_Toggle电平翻转模式&#xff0c; TIM_TimeBaseInitStruct.TIM_Period PWM_1_TIM_Period; 要设置成PWM_1_TIM_Period设置成0xffff - 1&#xff0c;设置成其他数值会出现脉冲一会有一会咩有。 资料&#xff1a;一文搞懂STM32定时器翻转模式&#xff08;产生…