You are given a 2D binary array grid. Find a rectangle with horizontal and vertical sides with thesmallest area, such that all the 1’s in grid lie inside this rectangle.
Return the minimum possible area of the rectangle.
To cover all 1’s in the grid with the smallest rectangle, we need to find the minimum and maximum row and column indices where a 1 appears. The rectangle defined by these bounds will cover all 1’s, and its area is simply the product of its height and width.
classSolution {
publicintminimumArea(int[][] grid) {
int m = grid.length, n = grid[0].length;
int minr = m, maxr =-1, minc = n, maxc =-1;
for(int i=0;i<m;++i) for(int j=0;j<n;++j) if(grid[i][j]==1) {
minr = Math.min(minr, i); maxr = Math.max(maxr, i);
minc = Math.min(minc, j); maxc = Math.max(maxc, j);
}
if(minr>maxr) return 0;
return (maxr-minr+1)*(maxc-minc+1);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
funminimumArea(grid: Array<IntArray>): Int {
val m = grid.size; val n = grid[0].size
var minr = m; var maxr = -1; var minc = n; var maxc = -1for (i in0 until m) for (j in0 until n) if (grid[i][j]==1) {
minr = minOf(minr, i); maxr = maxOf(maxr, i)
minc = minOf(minc, j); maxc = maxOf(maxc, j)
}
if (minr > maxr) return0return (maxr-minr+1)*(maxc-minc+1)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution:
defminimumArea(self, grid: list[list[int]]) -> int:
m, n = len(grid), len(grid[0])
minr, maxr, minc, maxc = m, -1, n, -1for i in range(m):
for j in range(n):
if grid[i][j] ==1:
minr = min(minr, i)
maxr = max(maxr, i)
minc = min(minc, j)
maxc = max(maxc, j)
if minr > maxr:
return0return (maxr-minr+1)*(maxc-minc+1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
impl Solution {
pubfnminimum_area(grid: Vec<Vec<i32>>) -> i32 {
let m = grid.len(); let n = grid[0].len();
let (mut minr, mut maxr, mut minc, mut maxc) = (m asi32, -1, n asi32, -1);
for i in0..m {
for j in0..n {
if grid[i][j]==1 {
minr = minr.min(i asi32); maxr = maxr.max(i asi32);
minc = minc.min(j asi32); maxc = maxc.max(j asi32);
}
}
}
if minr > maxr { return0; }
(maxr-minr+1)*(maxc-minc+1)
}
}