leetcode 223. Rectangle Area-矩形面积

来源:互联网 发布:魏则西事件知乎 编辑:程序博客网 时间:2024/04/29 19:12
原题链接:leetcode 223. Rectangle Area

【思路】

首先分成两部分:1. 没有交集(结果为两矩形面积之和)2. 有交集(结果为两矩形面积之和再减去公共部分)

第一种情况简单

第二种情况分为四种情况,交集分别位于矩形 ABCD 的左上角、左下角、右上角、右下角。如果一种一种考虑,代码量会很大,但是仔细观察发现实际上只要确定了左下角的 x和 y 左边,右上角的 x 和 y 左标就可以确定交集的面积:

    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {        int s = (C - A) * (D - B) + (G - E) * (H - F);        if (C <= E || F >= D || B >= H || A >= G)            return s;        int topX = Math.min(G, C);        int topY = Math.min(H, D);        int bottomX = Math.max(E, A);        int bottomY = Math.max(B, F);        return s - (topX - bottomX) * (topY - bottomY);    }
3081 / 3081 test cases passed. Runtime: 4 ms  Your runtime beats 65.22% of javasubmissions.

1 0
原创粉丝点击