说明:标签是乱起的。
-
中文地址: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);
}
}