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




just find max height (height cut between height cut) after each cut
and find max width (width cut between width cut) after each cut
ans = max height * max width
time: O(nlogn)
space: O(1)
class Solution {
public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {
Arrays.sort(horizontalCuts);
Arrays.sort(verticalCuts);
int n = horizontalCuts.length;
int m = verticalCuts.length;
long maxH = Math.max(horizontalCuts[0], h - horizontalCuts[n-1]);
for (int i = 1; i < n; i++) {
maxH = Math.max(maxH, horizontalCuts[i] - horizontalCuts[i-1]);
}
long maxW = Math.max(verticalCuts[0], w - verticalCuts[m-1]);
for (int i = 1; i < m; i++) {
maxW = Math.max(maxW, verticalCuts[i] - verticalCuts[i-1]);
}
return (int)(maxH*maxW%1000000007); // notice here, (int) (product)
}
}
long maxH = horizontalCuts[0];
for (int i = 1; i < n; i++) {
maxH = Math.max(maxH, horizontalCuts[i] - horizontalCuts[i-1]);
}
maxH = Math.max(maxH, h - horizontalCuts[n-1]);
可以寫成下面這樣, 合併再一起去比較了 (先
long maxH = Math.max(horizontalCuts[0], h - horizontalCuts[n-1]);
最後這個乘法, 要小心, 後面要一起乘玩, 再轉 int, 不然會壞掉
return (int)(maxH*maxW%1000000007); // notice here, (int) (product)
Last updated
Was this helpful?