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

【每日一题Day360】LC1465切割后面积最大的蛋糕 | 贪心

切割后面积最大的蛋糕【LC1465】

矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCutsverticalCuts,其中:

  • horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离
  • verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口的距离

请你按数组 horizontalCutsverticalCuts 中提供的水平和竖直位置切割后,请你找出 面积最大 的那份蛋糕,并返回其 面积 。由于答案可能是一个很大的数字,因此需要将结果 109 + 7 取余 后返回。

  • 思路

    切分结束后,每块蛋糕的长/宽由相邻两刀的距离决定,而面积为长*宽,长和宽为独立的两个分量,因此可以求出水平方向和垂直方向相邻两刀最长的距离,相乘得到最大面积

    • 局部最优:使蛋糕的长/宽较长
    • 全局最优:面积最大
  • 实现

    class Solution {public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {int n = horizontalCuts.length, m = verticalCuts.length;Arrays.sort(horizontalCuts);Arrays.sort(verticalCuts);int maxH = Math.max(horizontalCuts[0], h - horizontalCuts[n - 1]);int maxW = Math.max(verticalCuts[0], w - verticalCuts[m - 1]);for (int i = 0; i < n - 1; i++){maxH = Math.max(maxH, horizontalCuts[i + 1] - horizontalCuts[i]);}for (int i = 0; i < m - 1; i++){maxW = Math.max(maxW, verticalCuts[i + 1] - verticalCuts[i]);}return (int)((1L * maxH * maxW) % (int)(1e9 + 7));}
    }
    
    • 复杂度
      • 时间复杂度: O ( n log ⁡ n ) \mathcal{O}(n \log {n} ) O(nlogn)
      • 空间复杂度: O ( log ⁡ n ) \mathcal{O}(\log {n} ) O(logn)
http://www.lryc.cn/news/207834.html

相关文章:

  • 中国地名信息库
  • 网络时代下的声音之路:如何在中央新闻媒体发布网评稿
  • Selenium中WebDriver最新Chrome驱动安装教程
  • 云原生Docker数据管理
  • endnote设置
  • 计算机网络整理-简称缩写【期末复习|考研复习】
  • Flink Hive Catalog操作案例
  • NSSCTF做题第9页(3)
  • 从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程【文末送书五本】
  • 设置使用LibreOffice作为默认程序打开word、excel等文档
  • 创新领航 | 竹云参编《基于区块链的数据资产评估实施指南》正式发布!
  • 【Docker】Linux网桥连接多个命名空间
  • ES6新特性:let关键字详解
  • 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]
  • 使用pycharm远程连接到Linux服务器进行开发
  • JavaScript 中 BOM 基础知识有哪些?
  • 【PointNet—论文笔记分享】
  • Mysql8.1.0 windows 绿色版安装
  • 何为自制力?如何提高自制力?
  • 第1篇 目标检测概述 —(3)目标检测评价指标
  • 剑指JUC原理-3.线程常用方法及状态
  • MYSQL8-sql语句使用集合。MYCAT-sql语法使用集合
  • UNIX 域协议(本地通信协议)
  • 分类预测 | MATLAB实现SSA-CNN-BiGRU-Attention数据分类预测(SE注意力机制)
  • 基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
  • 算法进修Day-38
  • 8.MySQL内外连接
  • 使用.NET设计一个Epub电子书生成工具
  • 2023-10-26 用C语言实现一个大整数加法
  • [hive] 窗口函数 ROW_NUMBER()