[Leetcode] Rectangle Area 矩形面积

本文介绍了一种计算二维平面上两个矩形覆盖总面积的方法。通过数学方式判断矩形是否重叠,并计算重叠区域面积,从而得出两矩形总面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rectangle Area

Find the total area covered by two rectilinear rectangles in a 2D plane.
rectangle_area.png
Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.

Rectangle Area Assume that the total area is never beyond the maximum possible value of int.

数学法

复杂度

时间 O(N) 空间 O(1)

思路

基本的数学题,考察的是我们能否全面的考虑到所有可能。如果两个矩形没有重叠部分,则直接计算两个矩形面积之和就行了。如果两个矩形有重叠部分,则要将重叠部分减去。如何判断两个矩形没有重叠部分呢,如果一个矩形右上角的横坐标比另一个矩形左下角的横坐标要小,或者一个矩形右上角的纵坐标比另一个矩形左下角的纵坐标要小,则两个矩形是不重叠的。因为两个矩形的坐标都可能比对方小,所以我们一共有四种可能情况是不重叠的。如果重叠的话,计算重叠部分面积就是四个横坐标中中间那两个和四个纵坐标中间那两个。

代码

public class Solution {
    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        int dup = 0;
        if(C < E || G < A || D < F || H < B){
            dup = 0;
        } else {
            int[] x = {A, C, E, G};
            int[] y = {B, D, F, H};
            Arrays.sort(x);
            Arrays.sort(y);
            dup = (x[2] - x[1]) * (y[2] - y[1]);
        }
        return (C - A) * (D - B) + (G - E)*(H - F) - dup;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值