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

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

资源引用:

最大矩形面积问题 - 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
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.lryc.cn/news/522817.html

相关文章:

  • 我的世界-与门、或门、非门等基本门电路实现
  • 【FISCO BCOS】二十三、部署WeBASE-Node-Manager
  • app版本控制java后端接口版本管理
  • Go语言strings包与字符串操作:从基础到高级的全面解析
  • 使用redis-cli命令实现redis crud操作
  • Ubuntu升级Linux内核教程
  • 5、docker-compose和docker-harbor
  • Leetcode3097:或值至少为 K 的最短子数组 II
  • HTML应用指南:利用GET请求获取全国特斯拉充电桩位置
  • 阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI
  • 第8篇:从入门到精通:掌握Python异常处理
  • 设计模式-结构型-装饰器模式
  • git详细使用教程
  • java实现word转html(支持docx及doc文件)
  • 搜维尔科技:Xsens人形机器人解决方案的优势
  • 【王树森搜索引擎技术】概要01:搜索引擎的基本概念
  • 《Java核心技术II》可中断套接字
  • 基于 Python 的深度学习的车俩特征分析系统,附源码
  • C#读写ini配置文件保存设置参数
  • SwanLab环境变量列表
  • 深度学习入门-CNN
  • 微服务网关,如何选择?
  • SpringBoot集成Mqtt服务实现消费发布和接收消费
  • 在Mac mini上实现本地话部署AI和知识库
  • 一个方法被多个线程同时调用,确保同样参数的调用只能有一个线程执行,不同参数的调用则可以多个线程同时执行
  • 3. MySQL事务并发的问题与解决方法
  • 25/1/15 嵌入式笔记 初学STM32F108
  • MySQL的不同SQL模式导致行为不同?
  • Flink 使用 Kafka 作为数据源时遇到了偏移量提交失败的问题
  • 【日志篇】(7.6) ❀ 01. 在macOS下刷新FortiAnalyzer固件 ❀ FortiAnalyzer 日志分析