【leetcode 5425. 切割后面积最大的蛋糕】Python 解题思路

本文探讨了如何通过计算横切和竖切的最大间隔并相乘来解决蛋糕切割问题,以找到最大面积的切割方式。文章详细介绍了算法的实现过程,包括对切割点进行排序,计算相邻切割点之间的差值,最后返回最大横切和竖切间隔的乘积。

题目链接:
解题思路:
找到横切和竖切的最大间隔,然后相乘

代码:

class Solution:
    def maxArea(self, h: int, w: int, horizontalCuts: List[int], verticalCuts: List[int]) -> int:
        horizontalCuts.sort()
        verticalCuts.sort()
        n_hori=len(horizontalCuts)
        n_vert=len(verticalCuts)
        if n_hori>1:
            diff_hori=[horizontalCuts[i+1]-horizontalCuts[i] for i in range(n_hori-1)]
            diff_hori.append(horizontalCuts[0])
            diff_hori.append(h-horizontalCuts[-1])
        else:
            diff_hori=[horizontalCuts[0]]
            diff_hori.append(h-horizontalCuts[0])
        if n_vert>1:
            diff_vert=[verticalCuts[i+1]-verticalCuts[i] for i in range(n_vert-1)]
            diff_vert.append(verticalCuts[0])
            diff_vert.append(w-verticalCuts[-1])
        else:
            diff_vert=[verticalCuts[0]]
            diff_vert.append(w-verticalCuts[0])

        return max(diff_hori)*max(diff_vert)%(10**9+7)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值