diff --git a/25/11/3531.cpp b/25/11/3531.cpp new file mode 100644 index 0000000..5f49637 --- /dev/null +++ b/25/11/3531.cpp @@ -0,0 +1,29 @@ +#include + +class Solution { +public: + int countCoveredBuildings(int n, std::vector>& buildings) { + std::vector maxX(n + 1); + std::vector minX(n + 1, n + 1); + std::vector maxY(n + 1); + std::vector minY(n + 1, n + 1); + + for (auto &p : buildings) { + int x = p[0], y = p[1]; + maxX[y] = std::max(maxX[y], x); + minX[y] = std::min(minX[y], x); + maxY[x] = std::max(maxY[x], y); + minY[x] = std::min(minY[x], y); + } + + int res = 0; + for (auto &p : buildings) { + int x = p[0], y = p[1]; + if (x > minX[y] && x < maxX[y] && y > minY[x] && y < maxY[x]) { + res++; + } + } + + return res; + } +}; \ No newline at end of file diff --git a/25/11/go/3531.go b/25/11/go/3531.go new file mode 100644 index 0000000..02cfe0a --- /dev/null +++ b/25/11/go/3531.go @@ -0,0 +1,25 @@ +package L12 + +import "math" + +func countCoveredBuildings(n int, buildings [][]int) int { + ans, minX, maxX, minY, maxY := 0, make([]int, n+1), make([]int, n+1), make([]int, n+1), make([]int, n+1) + for i := range minX { + minX[i], minY[i], maxX[i], maxY[i] = math.MaxInt, math.MaxInt, math.MinInt, math.MinInt + } + + for _, building := range buildings { + x := building[0] + y := building[1] + minX[y], maxX[y], minY[x], maxY[x] = min(minX[y], x), max(maxX[y], x), min(minY[x], y), max(maxY[x], y) + } + + for _, building := range buildings { + x := building[0] + y := building[1] + if x < maxX[y] && x > minX[y] && y < maxY[x] && y > minY[x] { + ans++ + } + } + return ans +}