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

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.kler.cn/a/508720.html

相关文章:

  • 【Vim Masterclass 笔记16】S07L32 + L33:同步练习09 —— 掌握 Vim 宏操作的六个典型案例(含点评课内容)
  • 【时时三省】(C语言基础)柔性数组的使用
  • Linux操作命令之云计算基础命令
  • LabVIEW实现油浸式变压器自主监测与实时报告
  • 网站收录入口提交的方法有哪些(网站收录的方式都有哪些)
  • Android BottomNavigationView不加icon使text垂直居中,完美解决。
  • EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成
  • JAVA-Exploit编写(5)--http-request库使用
  • Python 爬虫:获取网页数据的 5 种方法
  • Maven在Win10上的安装教程
  • 家政服务小程序,打造智慧家政新体验
  • Rust:指针 `*T` 和引用 `T`的区别
  • 农业农村大数据应用场景|珈和科技“数字乡村一张图”解决方案
  • Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错,禁用dns
  • HTML5+Canvas实现的鼠标跟随自定义发光线条源码
  • MyBatisPlus--分页插件
  • 【第四课】冒泡排序,快速排序(acwing-785)
  • Python与PyTorch的浅拷贝与深拷贝
  • 梯度下降与权重更新解析
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(12)静力学分析基本参数及重力对计算结果的影响
  • 基于Android 位置定位的考勤 APP 设计与实现
  • 虚幻基础2:gameplay框架
  • 鸿蒙中选择地区
  • 归子莫的科技周刊#1:一周是一年的2%
  • 4.Spring AI Prompt:与大模型进行有效沟通
  • 利用Ai,帮我完善了UsbCamera App的几个界面和设置功能