每日打卡

2021-11-16 391 完美矩形

2021-11-17  本文已影响0人  16孙一凡通工

满足矩形区域的面积等于所有矩形的面积之和,还要满足矩形区域四角的顶点只能出现一次,且其余顶点的出现次数只能是两次或四次。

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;
}
上一篇 下一篇

猜你喜欢

热点阅读