aboutsummaryrefslogtreecommitdiff
path: root/find_min_area_conver_ones1.c
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-08-21 21:28:19 -0600
committerJack Sangdahl <[email protected]>2025-08-21 21:28:19 -0600
commit35df6818e96a1bd2db2a7aca00224ff39e1b8f13 (patch)
treedc0ad4bebb16120625cfb5840d15c23367063743 /find_min_area_conver_ones1.c
parent4d218d1ca8008396494b307b54560167f18ae0f6 (diff)
downloadleetcode-35df6818e96a1bd2db2a7aca00224ff39e1b8f13.tar.gz
leetcode-35df6818e96a1bd2db2a7aca00224ff39e1b8f13.zip
3195. find the minimum area to cover all ones 1
Diffstat (limited to 'find_min_area_conver_ones1.c')
-rw-r--r--find_min_area_conver_ones1.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/find_min_area_conver_ones1.c b/find_min_area_conver_ones1.c
new file mode 100644
index 0000000..3dc66be
--- /dev/null
+++ b/find_min_area_conver_ones1.c
@@ -0,0 +1,38 @@
+// 3195. Find the Minimum Area to Cover All Ones I
+#include "leetcode.h"
+
+/*
+ * you are given a 2d binary array 'grid'. find a rectangle with horizontal and
+ * vertical lines with the smallest area, such that all the 1's in 'grid' lie
+ * inside this rectangle. return the minimum possible area of the rectangle.
+ */
+
+int minimumArea(int **grid, int gridSize, int *gridColSize) {
+ int m = gridSize, n = gridColSize[0];
+ int min_row = m, max_row = -1;
+ int min_col = n, max_col = -1;
+ for (int i = 0; i < m; i++)
+ for (int j = 0; j < n; j++)
+ if (grid[i][j]) {
+ if (i < min_row)
+ min_row = i;
+ if (i > max_row)
+ max_row = i;
+ if (j < min_col)
+ min_col = j;
+ if (j > max_col)
+ max_col = j;
+ }
+ return (max_row - min_row + 1) * (max_col - min_col + 1);
+}
+
+int main() {
+ int g1i[2][3] = {{0, 1, 0}, {1, 0, 1}}, g2i[2][2] = {{1, 0}, {0, 0}};
+ struct two_d_arr g1, g2;
+ two_d_arr_init(&g1, ARRAY_SIZE(g1i), ARRAY_SIZE(g1i[0]), g1i);
+ two_d_arr_init(&g2, ARRAY_SIZE(g2i), ARRAY_SIZE(g2i[0]), g2i);
+ printf("%d\n", minimumArea(g1.arr, g1.row_size, g1.col_size)); // expect: 6
+ printf("%d\n", minimumArea(g2.arr, g2.row_size, g2.col_size)); // expect: 1
+ two_d_arr_free(&g1);
+ two_d_arr_free(&g2);
+}