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

网站开发亿玛酷专注4广州网站设计公司

网站开发亿玛酷专注4,广州网站设计公司,做轻时尚的网站,网店客服【LetMeFly】1465.切割后面积最大的蛋糕:纵横分别处理 力扣题目链接:https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCut…

【LetMeFly】1465.切割后面积最大的蛋糕:纵横分别处理

力扣题目链接:https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/

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

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

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

 

示例 1:

输入:h = 5, w = 4, horizontalCuts = [1,2,4], verticalCuts = [1,3]
输出:4 
解释:上图所示的矩阵蛋糕中,红色线表示水平和竖直方向上的切口。切割蛋糕后,绿色的那份蛋糕面积最大。

示例 2:

输入:h = 5, w = 4, horizontalCuts = [3,1], verticalCuts = [1]
输出:6
解释:上图所示的矩阵蛋糕中,红色线表示水平和竖直方向上的切口。切割蛋糕后,绿色和黄色的两份蛋糕面积最大。

示例 3:

输入:h = 5, w = 4, horizontalCuts = [3], verticalCuts = [3]
输出:9

 

提示:

  • 2 <= h, w <= 109
  • 1 <= horizontalCuts.length <= min(h - 1, 105)
  • 1 <= verticalCuts.length <= min(w - 1, 105)
  • 1 <= horizontalCuts[i] < h
  • 1 <= verticalCuts[i] < w
  • 题目数据保证 horizontalCuts 中的所有元素各不相同
  • 题目数据保证 verticalCuts 中的所有元素各不相同

方法一:纵横分别处理

横向的一刀和纵向的一刀之间是互不干扰的。因此,我们只需要求出“横向上的最大间隔”和“纵向上的最大间隔”,然后相乘即可。

对于单个方向:我们只需要求出“相邻两刀”的最大间隔,以及第一刀和最后一刀距离边界的值的最大值即可。

  • 时间复杂度 O ( n log ⁡ n + m log ⁡ m ) O(n\log n + m\log m) O(nlogn+mlogm)
  • 空间复杂度 O ( log ⁡ n + log ⁡ m ) O(\log n + \log m) O(logn+logm)

AC代码

C++
class Solution {
private:long long getMax(int l, vector<int>& v) {sort(v.begin(), v.end());int ans= 0;for (int i = 1; i < v.size(); i++) {ans = max(ans, v[i] -  v[i - 1]);}return max(ans, max(v[0], l - v[v.size() - 1]));}public:int maxArea(int h, int w, vector<int>& horizontalCuts, vector<int>& verticalCuts) {return getMax(h, horizontalCuts) *  getMax(w, verticalCuts) % 1000000007;}
};
Python
# from typing import Listclass Solution:def getMax(self, l: int, v: List[int]) -> int:v.sort()ans = v[0]for i in range(1, len(v)):ans = max(ans, v[i] - v[i - 1])return max(ans, l - v[-1])def maxArea(self, h: int, w: int, horizontalCuts: List[int], verticalCuts: List[int]) -> int:return self.getMax(h, horizontalCuts) * self.getMax(w, verticalCuts) % 1000000007

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/134073948

http://www.dinnco.com/news/79085.html

相关文章:

  • 网站设计公司 龙岗环球资源网站网址
  • 那个网站教做馒头seo兼职接单平台
  • 外卖网站怎么做网盘资源
  • wordpress升级需要ftpseo实战培训学校
  • shopbase建站费用哪个平台做推广效果好
  • 广告设计与制作就业率南京seo公司排名
  • 福建住建设厅官方网站锦州seo推广
  • 仙踪林老狼网站欢迎您拍照做引流的公司是正规的吗
  • 低代码开发平台 开源宁波seo在线优化公司
  • 搭建app需要多少钱seo关键词排名优化系统
  • 纯静态网站开发百度问一问在线咨询客服
  • 网站建设 电话营销sem推广优化
  • 网站建设爫金手指科捷15销售课程视频免费
  • 用模板做网站教程百度手机下载安装
  • 单机网页游戏网站深圳龙岗区疫情最新消息
  • 网站开发的步骤实训内容优化设计官网
  • 计算机网站建设与开发网站关键词排名优化推广软件
  • 做风能的网站亚马逊关键词
  • 用wordpress做的网站自媒体运营
  • 电子商务电商网站设计酒店线上推广方案有哪些
  • ps设计网站首页效果图看seo
  • 合肥做检查军大网站百度开店怎么收费
  • 网站描述范例网络竞价推广开户
  • 网站规划建设与管理维护教程与实训北京网站优化步骤
  • 做滚动图的免费网站佣金高的推广平台
  • 住建局现任领导班子开鲁网站seo转接
  • 手机评测网站网站怎么做谷歌推广
  • 宣传推广的方式夫唯seo视频教程
  • 厦门网站排名最近实时热点事件
  • 20g网站流量有多大商丘seo公司