From 94e154a68271dd3b953da19332181e78a361ebaf Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sun, 17 Aug 2025 22:29:47 +0800 Subject: [PATCH] Add solution and test-cases for problem 3239 --- .../1.png | Bin 0 -> 5196 bytes .../2.png | Bin 0 -> 4659 bytes .../README.md | 52 +++++++++++++----- .../Solution.go | 23 +++++++- .../Solution_test.go | 14 ++--- 5 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/1.png create mode 100644 leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/2.png diff --git a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/1.png b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/1.png new file mode 100644 index 0000000000000000000000000000000000000000..da106a0c9b9303540edf65fe8c420e446da4fca2 GIT binary patch literal 5196 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 YhHiYiC2E!dno|(sit*(V9s9fg1RQ-e9smFU literal 0 HcmV?d00001 diff --git a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/2.png b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/2.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a2760c6a4aa84c0843d370ac1409ec6f6b58fa GIT binary patch literal 4659 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 Ip7Z^G0PPdjAOHXW literal 0 HcmV?d00001 diff --git a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/README.md b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/README.md index 808a9dbd7..9f0040a7f 100755 --- a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/README.md +++ b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/README.md @@ -1,28 +1,54 @@ # [3239.Minimum Number of Flips to Make Binary Grid Palindromic 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 an `m x n` binary matrix `grid`. + +A row or column is considered `palindromic` if its values read the same forward and backward. + +You can **flip** any number of cells in `grid` from `0` to `1`, or from `1` to `0`. + +Return the **minimum** number of cells that need to be flipped to make **either** all rows **palindromic** or all columns **palindromic**. + -**Example 1:** +**Example 1:** + +![1](./1.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: grid = [[1,0,0],[0,0,0],[0,0,1]] + +Output: 2 + +Explanation: + +Flipping the highlighted cells makes all the rows palindromic. ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.png) -### 思路1 -> ... -Minimum Number of Flips to Make Binary Grid Palindromic I -```go ``` +Input: grid = [[0,1],[0,1],[0,0]] + +Output: 1 +Explanation: + +Flipping the highlighted cell makes all the columns palindromic. +``` + +**Example 3:** + +``` +Input: grid = [[1],[0]] + +Output: 0 + +Explanation: + +All rows are already palindromic. +``` ## 结语 diff --git a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution.go b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution.go index d115ccf5e..4dbafcb5b 100644 --- a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution.go +++ b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution.go @@ -1,5 +1,24 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(grid [][]int) int { + rows, cols := len(grid), len(grid[0]) + ans := rows * cols + need := 0 + for i := 0; i < rows; i++ { + for s, e := 0, cols-1; s < e; s, e = s+1, e-1 { + if grid[i][s] != grid[i][e] { + need++ + } + } + } + ans = min(ans, need) + need = 0 + for i := 0; i < cols; i++ { + for s, e := 0, rows-1; s < e; s, e = s+1, e-1 { + if grid[s][i] != grid[e][i] { + need++ + } + } + } + return min(ans, need) } diff --git a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution_test.go b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution_test.go index 14ff50eb4..f8ae60afc 100644 --- a/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution_test.go +++ b/leetcode/3201-3300/3239.Minimum-Number-of-Flips-to-Make-Binary-Grid-Palindromic-I/Solution_test.go @@ -10,12 +10,12 @@ 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{{1, 0, 0}, {0, 0, 0}, {0, 0, 1}}, 2}, + {"TestCase2", [][]int{{0, 1}, {0, 1}, {0, 0}}, 1}, + {"TestCase3", [][]int{{1}, {0}}, 0}, } // 开始测试 @@ -30,10 +30,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }