DDSA Solutions

1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts

Time: O(n log n)
Space: O(1)

Problem Overview

Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts (Unknown) asks you to solve a structured algorithmic task. This is a common Array / Greedy pattern in coding interviews. Sort cuts; find max gap in horizontal and vertical cuts; answer = maxGapH × maxGapV mod 10^9+7.

A full step-by-step explanation is being added. See the study guide for pattern-based practice.

Approach

Sort cuts; find max gap in horizontal and vertical cuts; answer = maxGapH × maxGapV mod 10^9+7.

Related patterns: Array, Greedy, Sorting

1465.cs
C#
// Approach: Sort cuts; find max gap in horizontal and vertical cuts; answer = maxGapH × maxGapV mod 10^9+7.
// Time: O(n log n) Space: O(1)

public class Solution
{
    public int MaxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts)
    {
        const int kMod = 1_000_000_007;
        Array.Sort(horizontalCuts);
        Array.Sort(verticalCuts);

        // the maximum gap of each direction
        int maxGapX = Math.Max(verticalCuts[0], w - verticalCuts[verticalCuts.Length - 1]);
        int maxGapY = Math.Max(horizontalCuts[0], h - horizontalCuts[horizontalCuts.Length - 1]);

        for (int i = 1; i < verticalCuts.Length; ++i)
            maxGapX = Math.Max(maxGapX, verticalCuts[i] - verticalCuts[i - 1]);

        for (int i = 1; i < horizontalCuts.Length; ++i)
            maxGapY = Math.Max(maxGapY, horizontalCuts[i] - horizontalCuts[i - 1]);

        return (int)((long)maxGapX * maxGapY % kMod);
    }
}
Was this solution helpful?

Related Problems