满足矩形区域的面积等于所有矩形的面积之和,还要满足矩形区域四角的顶点只能出现一次,且其余顶点的出现次数只能是两次或四次。
go版本:
import (
"fmt"
)
type point struct{ x, y int }
func isRectangleCover(rectangles [][]int) bool {
// 算面积的思路, s1 := mapset.NewSet(1, 2, 3, 4)make()
hashmap:=make(map[point]int)
square_all:=0
square_max:=0
max_a,max_b,max_c,max_d:=rectangles[0][0],rectangles[0][1],rectangles[0][2],rectangles[0][3]
for i:=0;i<len(rectangles);i++{
a,b,c,d:=rectangles[i][0],rectangles[i][1],rectangles[i][2],rectangles[i][3]
square_all+=(c-a)*(d-b)
max_a=min(max_a,a)
max_b=min(max_b,b)
max_c=max(max_c,c)
max_d=max(max_d,d)
hashmap[point{a,b}]++
hashmap[point{a,d}]++
hashmap[point{c,d}]++
hashmap[point{c,b}]++
}
square_max=(max_c-max_a)*(max_d-max_b);
fmt.Println(square_all)
fmt.Println(square_max)
if square_max!=square_all || hashmap[point{max_a,max_b}]!=1 || hashmap[point{max_a,max_d}]!=1 || hashmap[point{max_c,max_d}]!=1 || hashmap[point{max_c,max_d}]!=1 {
return false;
}
delete(hashmap,point{max_a,max_b})
delete(hashmap,point{max_a,max_d})
delete(hashmap,point{max_c,max_b})
delete(hashmap,point{max_c,max_d})
for _,value :=range hashmap{
if value !=2 && value!=4{
return false
}
}
return true;
}
func max(nums1 int,nums2 int)int{
if nums1>nums2{
return nums1;
}
return nums2;
}
func min(nums1 int,nums2 int)int{
if nums1>nums2{
return nums2;
}
return nums1;
}
网友评论