2022-01-21:完美矩形。 给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi,
2022-01-21:完美矩形。
给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。
如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。
力扣391。
答案2022-01-21:
条件一:四个顶点出现一次,其他点出现偶数次。
条件二:小矩形面积之和是否等于四个顶点的矩形之和。
满足这两个条件,就返回true。
代码用golang编写。代码如下:
package main
import (
"fmt"
"math"
)
func main() {
m := [][]int{{1, 1, 3, 3}, {3, 1, 4, 2}, {3, 2, 4, 4}, {1, 3, 2, 4}, {2, 3, 3, 4}}
ret := isRectangleCover(m)
fmt.Println(ret)
}
func isRectangleCover(matrix [][]int) bool {
if len(matrix) == 0 || len(matrix[0]) == 0 {
return false
}
l := math.MaxInt64
r := math.MinInt64
d := math.MaxInt64
u := math.MinInt64
map0 := make(map[int]map[int]int)
area := 0
for _, rect := range matrix {
add(map0, rect[0], rect[1])
add(map0, rect[0], rect[3])
add(map0, rect[2], rect[1])
add(map0, rect[2], rect[3])
area += (rect[2] - rect[0]) * (rect[3] - rect[1])
l = getMin(rect[0], l)
d = getMin(rect[1], d)
r = getMax(rect[2], r)
u = getMax(rect[3], u)
}
return checkPoints(map0, l, d, r, u) && area == (r-l)*(u-d)
}
func add(map0 map[int]map[int]int, row, col int) {
if _, ok := map0[row]; !ok {
map0[row] = make(map[int]int)
}
map0[row][col]++
}
func checkPoints(map0 map[int]map[int]int, l, d, r, u int) bool {
if map0[l][d] != 1 || map0[l][u] != 1 || map0[r][d] != 1 || map0[r][u] != 1 {
return false
}
delete(map0[l], d)
delete(map0[l], u)
delete(map0[r], d)
delete(map0[r], u)
for key, _ := range map0 {
for _, value := range map0[key] {
if (value & 1) != 0 {
return false
}
}
}
return true
}
func getMax(a, b int) int {
if a > b {
return a
} else {
return b
}
}
func getMin(a, b int) int {
if a < b {
return a
} else {
return b
}
}
执行结果如下:
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2021-01-21 2021-01-21:java中,HashMap的读流程是什么?