From 205ae9b7d52dd376d497a68f0bb407635e8677bc Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Fri, 22 Aug 2025 08:57:13 +0800 Subject: [PATCH] Add solution and test-cases for problem 3195 --- .../1.png | Bin 0 -> 12513 bytes .../2.png | Bin 0 -> 7542 bytes .../README.md | 35 +++++++++++------- .../Solution.go | 19 +++++++++- .../Solution_test.go | 13 +++---- 5 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/1.png create mode 100644 leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/2.png diff --git a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/1.png b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/1.png new file mode 100644 index 0000000000000000000000000000000000000000..b84f01864da155b4845aab221931219bb6a618c9 GIT binary patch literal 12513 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 literal 0 HcmV?d00001 diff --git a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/README.md b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/README.md index 8ae78c296..07307f9a0 100755 --- a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/README.md +++ b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/README.md @@ -1,28 +1,37 @@ # [3195.Find the Minimum Area to Cover All Ones I][title] -> [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +You are given a 2D **binary** array `grid`. Find a rectangle with horizontal and vertical sides with the **smallest** area, such that all the 1's in `grid` lie inside this rectangle. + +Return the **minimum** possible area of the rectangle. + +**Example 1:** -**Example 1:** +![1](./1.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: grid = [[0,1,0],[1,0,1]] + +Output: 6 + +Explanation: + +The smallest rectangle has a height of 2 and a width of 3, so it has an area of 2 * 3 = 6. ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.png) -### 思路1 -> ... -Find the Minimum Area to Cover All Ones I -```go ``` +Input: grid = [[1,0],[0,0]] + +Output: 1 +Explanation: + +The smallest rectangle has both height and width 1, so its area is 1 * 1 = 1. +``` ## 结语 diff --git a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution.go b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution.go index d115ccf5e..7d780374e 100644 --- a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution.go +++ b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution.go @@ -1,5 +1,20 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(grid [][]int) int { + leftTop, rightBottom := [2]int{1001, 1001}, [2]int{-1, -1} + rows, cols := len(grid), len(grid[0]) + for i := 0; i < rows; i++ { + for j := 0; j < cols; j++ { + if grid[i][j] == 1 { + leftTop[0] = min(leftTop[0], i) + leftTop[1] = min(leftTop[1], j) + + rightBottom[0] = max(rightBottom[0], i) + rightBottom[1] = max(rightBottom[1], j) + } + } + } + x := rightBottom[0] - leftTop[0] + y := rightBottom[1] - leftTop[1] + return (x + 1) * (y + 1) } diff --git a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution_test.go b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution_test.go index 14ff50eb4..24574291a 100644 --- a/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution_test.go +++ b/leetcode/3101-3200/3195.Find-the-Minimum-Area-to-Cover-All-Ones-I/Solution_test.go @@ -10,12 +10,11 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs [][]int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", [][]int{{0, 1, 0}, {1, 0, 1}}, 6}, + {"TestCase2", [][]int{{1, 0}, {0, 0}}, 1}, } // 开始测试 @@ -30,10 +29,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }