「力扣」第 1465 题:切割后面积最大的蛋糕(区间和)

说明:标签是乱起的。

  • 中文地址:https://leetcode-cn.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/

  • 英文地址:https://leetcode.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/

思路:

  • 找出最长的「长」和「宽」即可,注意边界条件和调试。

Java 代码:

import java.util.Arrays;

public class Solution {
    
    

    // horizontalCuts 水平
    // verticalCuts 垂直

    public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {
    
    
        Arrays.sort(horizontalCuts);
        Arrays.sort(verticalCuts);

        int rows = horizontalCuts.length;
        int[] newHorizontalCuts = new int[rows + 2];
        System.arraycopy(horizontalCuts, 0, newHorizontalCuts, 1, rows);
        newHorizontalCuts[rows + 1] = h;
        horizontalCuts = newHorizontalCuts;
        rows += 2;

        int cols = verticalCuts.length;
        int[] newVerticalCuts = new int[cols + 2];
        System.arraycopy(verticalCuts, 0, newVerticalCuts, 1, cols);
        newVerticalCuts[cols + 1] = w;
        verticalCuts = newVerticalCuts;
        cols += 2;

        int maxHigh = 0;
        for (int i = 1; i < rows; i++) {
    
    
            maxHigh = Math.max(maxHigh, horizontalCuts[i] - horizontalCuts[i - 1]);
        }

        int maxWidth = 0;
        for (int i = 1; i < cols; i++) {
    
    
            maxWidth = Math.max(maxWidth, verticalCuts[i] - verticalCuts[i - 1]);
        }
        return (int) ((long) maxHigh * maxWidth % 1000000007);
    }

    public static void main(String[] args) {
    
    
        Solution solution = new Solution();

//        int h = 5;
//        int w = 4;
//        int[] horizontalCuts = {1, 2, 4};
//        int[] verticalCuts = {1, 3};

        int h = 5;
        int w = 4;
        int[] horizontalCuts = {
    
    3, 1};
        int[] verticalCuts = {
    
    1};

//        int h = 5;
//        int w = 4;
//        int[] horizontalCuts = {3};
//        int[] verticalCuts = {3};

        int res = solution.maxArea(h, w, horizontalCuts, verticalCuts);
        System.out.println(res);
    }
}

猜你喜欢

转载自blog.csdn.net/lw_power/article/details/106456993