leetcode刷题笔记 223题 矩形面积

leetcode刷题笔记 223题 矩形面积

源地址:223. 矩形面积

问题描述:

在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。

每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

示例:

输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45

//保证ABCD指示左侧矩形,计算交叉面积的上下左右,计算交叉面积用于扣除
object Solution {
    def computeArea(A: Int, B: Int, C: Int, D: Int, E: Int, F: Int, G: Int, H: Int): Int = {
        if (A < E) computeArea(E, F, G, H, A, B, C, D)

        if (D <= F || C <= E || H <= B || G <= A) return (D-B)*(C-A) + (H-F)*(G-E)

        val xLeft = math.max(A, E)
        val xRight = math.min(C, G)
        val xTop = math.min(D, H)
        val xBottom = math.max(B, F)
        return  (D-B)*(C-A) + (H-F)*(G-E) - (xTop-xBottom)*(xRight-xLeft)
    }
}
posted @ 2020-10-09 10:04  ganshuoos  阅读(108)  评论(0编辑  收藏  举报