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

【每日一题】切割后面积最大的蛋糕

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:排序
  • 其他语言
    • python3
  • 写在最后

Tag

【排序】【数组】【2023-10-27】


题目来源

1465. 切割后面积最大的蛋糕


题目解读

切割后面积最大的蛋糕。


解题思路

方法一:排序

本题较为简单,找出最大的宽和高,然后返回乘积即可。为了找出找出最大的宽和高,我们需要计算相邻两条切痕之间的距离(包括边界与最近的切痕之间的距离)。为了便于计算,可以对水平方向和竖直方向的切痕进行排序。具体实现见下方代码。

实现代码

class Solution {
public:
    int maxArea(int h, int w, vector<int>& horizontalCuts, vector<int>& verticalCuts) {
        const int MOD = 1e9 + 7;
        sort(verticalCuts.begin(), verticalCuts.end());
        sort(horizontalCuts.begin(), horizontalCuts.end());

        long long width = 0, heigh = 0, prev = 0;
        for (auto vert : verticalCuts) {
            width = max(width, vert - prev);
            prev = vert;
        }
        width = max(width, w - prev);

        prev = 0;
        for (auto hor : horizontalCuts) {
            heigh = max(heigh, hor - prev);
            prev = hor;
        }
        heigh = max(heigh, h - prev);

        long long res = (long long) width * heigh % MOD;
        return res;
    }
};

复杂度分析

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n 为数组 horizontalCutsverticalCuts 的最大长度。

空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)

其他语言

python3

class Solution:
    def maxArea(self, h: int, w: int, horizontalCuts: List[int], verticalCuts: List[int]) -> int:
        width, heigh, prev = 0, 0, 0
        mod = 10 ** 9 + 7
        horizontalCuts.sort()
        verticalCuts.sort()

        for vert in verticalCuts:
            width = max(width, vert - prev)
            prev = vert
        width = max(width, w - prev)

        prev = 0
        for hor in horizontalCuts:
            heigh = max(heigh, hor - prev)
            prev = hor
        heigh = max(heigh, h - prev)

        res = width * heigh % mod
        return res

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。


http://www.kler.cn/a/105644.html

相关文章:

  • Hyperledger Fabric搭建测试网络
  • Go 的连接池、重试和超时
  • 2011-2021年“第四期”数字普惠金融指数与上市公司匹配(根据省份匹配)/上市公司数字金融指数匹配
  • Python 继承和子类示例:从 Person 到 Student 的演示
  • Python遍历删除列表元素的一个奇怪bug
  • k8s部署kafka,并使用zookeeper做注册中心
  • 探索JavaScript ES6+新特性
  • 封装axios的两种方式
  • uni-app——如何阻止事件冒泡
  • uniapp:谷歌地图,实现地图展示,搜索功能,H5导航
  • 交易所(Exchange, ACM/ICPC NEERC 2006, UVa1598)rust解法
  • Android12之#pragma clang diagnostic ignored总结(一百六十八)
  • golang 工程组件 grpc-gateway—yaml定义http规则,和自定义实现网关路由
  • WordPress(7)配置邮箱发送功能
  • 【UE】抓取物体
  • Jenkins发布windows服务器jar
  • 用python实现操作mongodb的插入和查找操作
  • 20231026_java基础_设计模式
  • 二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard
  • 微信小程序通过startLocationUpdate,onLocationChange获取当前地理位置信息,配合腾讯地图解析获取到地址