leetcode 223. Rectangle Area-矩形面积

原题链接: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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值