From 094181ac2b2a061bd06d075b97a17d218a5abacf Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Thu, 11 Dec 2025 22:47:42 +0800 Subject: [PATCH] Add solution and test-cases for problem 3531 --- .../3531.Count-Covered-Buildings/1.jpg | Bin 0 -> 7855 bytes .../3531.Count-Covered-Buildings/2.jpg | Bin 0 -> 7431 bytes .../3531.Count-Covered-Buildings/3.jpg | Bin 0 -> 17091 bytes .../3531.Count-Covered-Buildings/README.md | 61 ++++++++++++++---- .../3531.Count-Covered-Buildings/Solution.go | 44 ++++++++++++- .../Solution_test.go | 21 +++--- 6 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 leetcode/3501-3600/3531.Count-Covered-Buildings/1.jpg create mode 100644 leetcode/3501-3600/3531.Count-Covered-Buildings/2.jpg create mode 100644 leetcode/3501-3600/3531.Count-Covered-Buildings/3.jpg diff --git a/leetcode/3501-3600/3531.Count-Covered-Buildings/1.jpg b/leetcode/3501-3600/3531.Count-Covered-Buildings/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2ee284692b1452820e97d2b287f6f9ced704fec GIT binary patch literal 7855 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 Nhk*a-Pu%lw{{uEpzF7bO literal 0 HcmV?d00001 diff --git a/leetcode/3501-3600/3531.Count-Covered-Buildings/2.jpg b/leetcode/3501-3600/3531.Count-Covered-Buildings/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3368d415c63d5f08a827cbe9193c249531182705 GIT binary patch literal 7431 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 Ah5!Hn literal 0 HcmV?d00001 diff --git a/leetcode/3501-3600/3531.Count-Covered-Buildings/3.jpg b/leetcode/3501-3600/3531.Count-Covered-Buildings/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a42f783200f5853b4af4d3a73cd101d641824e43 GIT binary patch literal 17091 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 L&w [!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 positive integer `n`, representing an `n x n` city. You are also given a 2D grid `buildings`, where `buildings[i] = [x, y]` denotes a **unique** building located at coordinates `[x, y]`. + +A building is **covered** if there is at least one building in all **four** directions: left, right, above, and below. + +Return the number of **covered** buildings. + +**Example 1:** + +![1](./1.jpg) + +``` +Input: n = 3, buildings = [[1,2],[2,2],[3,2],[2,1],[2,3]] + +Output: 1 + +Explanation: -**Example 1:** +Only building [2,2] is covered as it has at least one building: +above ([1,2]) +below ([3,2]) +left ([2,1]) +right ([2,3]) +Thus, the count of covered buildings is 1. +``` + +**Example 2:** + +![2](./2.jpg) ``` -Input: a = "11", b = "1" -Output: "100" +Input: n = 3, buildings = [[1,1],[1,2],[2,1],[2,2]] + +Output: 0 + +Explanation: + +No building has at least one building in all four directions. ``` -## 题意 -> ... +**Example 3:** -## 题解 +![3](./3.jpg) -### 思路1 -> ... -Count Covered Buildings -```go ``` +Input: n = 5, buildings = [[1,3],[3,2],[3,3],[3,5],[5,3]] + +Output: 1 +Explanation: + +Only building [3,3] is covered as it has at least one building: +above ([1,3]) +below ([5,3]) +left ([3,2]) +right ([3,5]) +Thus, the count of covered buildings is 1. +``` ## 结语 diff --git a/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution.go b/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution.go index d115ccf5e..e126334b8 100644 --- a/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution.go +++ b/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution.go @@ -1,5 +1,45 @@ package Solution -func Solution(x bool) bool { - return x +import "sort" + +func Solution(n int, buildings [][]int) int { + var ret int + l := len(buildings) + byY := make([][]int, l) + byX := make([][]int, l) + copy(byY, buildings) + copy(byX, buildings) + sort.Slice(byY, func(i, j int) bool { + return byY[i][1] < byY[j][1] + }) + sort.Slice(byX, func(i, j int) bool { + return byX[i][0] < byX[j][0] + }) + + yLoc := make(map[int][]int) + xLoc := make(map[int][]int) + for _, build := range byY { + xLoc[build[0]] = append(xLoc[build[0]], build[1]) + } + for _, build := range byX { + yLoc[build[1]] = append(yLoc[build[1]], build[0]) + } + + for _, build := range buildings { + x, y := build[0], build[1] + index := sort.Search(len(xLoc[x]), func(i int) bool { + return xLoc[x][i] >= y + }) + if index > 0 && index < len(xLoc[x])-1 { + j := sort.Search(len(yLoc[y]), func(ii int) bool { + return yLoc[y][ii] >= x + }) + if j > 0 && j < len(yLoc[y])-1 { + ret++ + } + } + + } + + return ret } diff --git a/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution_test.go b/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution_test.go index 14ff50eb4..3be68758c 100644 --- a/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution_test.go +++ b/leetcode/3501-3600/3531.Count-Covered-Buildings/Solution_test.go @@ -10,30 +10,31 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + n int + inputs [][]int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", 3, [][]int{{1, 2}, {2, 2}, {3, 2}, {2, 1}, {2, 3}}, 1}, + {"TestCase2", 3, [][]int{{1, 1}, {1, 2}, {2, 1}, {2, 2}}, 0}, + {"TestCase3", 5, [][]int{{1, 3}, {3, 2}, {3, 3}, {3, 5}, {5, 3}}, 1}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.n, c.inputs) if !reflect.DeepEqual(got, c.expect) { - t.Fatalf("expected: %v, but got: %v, with inputs: %v", - c.expect, got, c.inputs) + t.Fatalf("expected: %v, but got: %v, with inputs: %v %v", + c.expect, got, c.n, c.inputs) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }