矩形面积

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rectangle-area

题目描述:

给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积。
每个矩形由其 左下 顶点和 右上 顶点坐标表示:
第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。
第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。

示例 1:

输入:ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
输出:45

示例 2:

输入:ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
输出:16

题目分析:
  1. 知道矩形a,b的左下顶点,右上顶点坐标.使用(a2 - a1) * (b2 - b1)可求矩形面积
  2. 矩形有可能相交.
  3. 矩形a的面积加上矩形b的面积减去相交部分面积(如果相交).
  • 相交矩形的左下坐标为矩形a,b左下坐标(x,y)的最大值,右上坐标为矩形a,b右上坐标的最小值.
思路:
  • 计算矩形a,b的面积
  • 计算相交矩形的左下,右上坐标
  • 判断矩形a,b是否相交
    -- 如果矩形a,b不相交,则矩形b的by2 <= ay1 || bx1 >= ax2 || bx2 <= ax1 || by1 >= ay2
代码实现:
class Solution {
    public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        // 矩形a的面积.
        int area_a = (ax2 - ax1) * (ay2 - ay1);
        // 矩形b的面积.
        int area_b = (bx2 - bx1) * (by2 - by1);
        // 相交面积矩形左下角x坐标
        int cx1 = Math.max(ax1, bx1);
        // 相交面积矩形左下角y坐标
        int cy1 = Math.max(ay1, by1);
        // 相交面积矩形右上角x坐标
        int cx2 = Math.min(ax2, bx2);
        // 相交面积矩形右上角y坐标
        int cy2 = Math.min(ay2, by2);
        // 判断矩形a和矩形b是否相交.
        if (by2 <= ay1 || bx1 >= ax2 || bx2 <= ax1 || by1 >= ay2) return area_a + area_b;
        // 计算相交矩形面积
        int area_c = (cx2 - cx1) * (cy2 - cy1);
        // 返回结果.
        return area_a + area_b - area_c;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。 每个矩形由其左下顶点和右上顶点坐标表示,如图所示。 示...
    放下梧菲阅读 412评论 0赞 0
  • 223 Rectangle Area 矩形面积 Description:Find the total area c...
    air_melt阅读 298评论 0赞 0
  • 题目 难度:★★★★☆类型:数学方法:分类讨论 传送门 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。...
    玖月晴阅读 1,214评论 0赞 0
  • 题目 难度:★★★★☆ 我们给出了一个(轴对齐的)矩形列表 rectangles 。 对于 rectangle[i...
    玖月晴阅读 1,707评论 0赞 0
  • 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。 示例...
    上行彩虹人阅读 280评论 0赞 0

友情链接更多精彩内容