给你一个二维 二进制 数组 grid
。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形,并且满足 grid
中所有的 1 都在矩形的内部。
返回这个矩形可能的 最小面积。
示例 1:
输入: grid = [[0,1,0],[1,0,1]]
输出: 6
解释:
这个最小矩形的高度为 2,宽度为 3,因此面积为
2 * 3 = 6
。
示例 2:
输入: grid = [[0,0],[1,0]]
输出: 1
解释:
这个最小矩形的高度和宽度都是 1,因此面积为
1 * 1 = 1
。
提示:
1 <= grid.length, grid[i].length <= 1000
grid[i][j]
是 0 或 1。- 输入保证
grid
中至少有一个 1 。
我的解答:
java
class Solution {
public int minimumArea(int[][] grid) {
int min_x = 1000,min_y = 1000;
int max_x = 0,max_y = 0;
for(int x = 0; x < grid.length; x++){
for(int y = 0; y < grid[x].length; y++){
if(grid[x][y] == 1){
// 找出最早出现1的x坐标
min_x = Math.min(min_x,x);
// 找出最晚出现1的x坐标
max_x = Math.max(max_x,x);
// 找出最早出现1的y坐标
min_y = Math.min(min_y,y);
// 找出最晚出现1的y坐标
max_y = Math.max(max_y,y);
}
}
}
return (max_x - min_x + 1) * (max_y - min_y + 1) ;
}
}