博客
关于我
【Leetcode】223. Rectangle Area
阅读量:194 次
发布时间:2019-02-28

本文共 1179 字,大约阅读时间需要 3 分钟。

给定平面直角坐标系中两个矩形,求其边界围成的区域的面积。计算两个矩形重叠部分即可,如果没有重叠则直接返回两个矩形面积之和,否则返回面积之和减去重叠部分的面积。

代码解析:

public class Solution {    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {        // 计算重叠部分的左、右边界坐标        int left = Math.max(A, E);        int right = Math.min(C, G);        // 计算重叠部分的上、下边界坐标        int low = Math.max(B, F);        int up = Math.min(D, H);        // 计算两个矩形的面积之和        int sum = (C - A) * (D - B) + (G - E) * (H - F);        // 判断是否有重叠        if (right <= left || up <= low) {            return sum; // 没有重叠时,直接返回面积之和        }        // 计算重叠部分的面积        int overlap = (right - left) * (up - low);        return sum - overlap; // 有重叠时,返回面积之和减去重叠部分    }}

代码解释:

  • 确定重叠边界:

    • left = Math.max(A, E):取两个矩形左边界较大的一个。
    • right = Math.min(C, G):取两个矩形右边界较小的一个。
    • low = Math.max(B, F):取两个矩形下边界较大的一个。
    • up = Math.min(D, H):取两个矩形上边界较小的一个。
  • 计算面积之和:

    • 第一个矩形面积:(C - A) * (D - B)
    • 第二个矩形面积:(G - E) * (H - F)
    • 总面积:sum = (C - A) * (D - B) + (G - E) * (H - F)
  • 判断是否有重叠:

    • 如果 right <= leftup <= low,说明没有重叠,直接返回总面积。
  • 计算并返回重叠部分面积:

    • 重叠宽度:right - left
    • 重叠高度:up - low
    • 重叠面积:overlap = (right - left) * (up - low)
    • 最终返回总面积减去重叠面积。
  • 时空复杂度:

    该算法的时间复杂度为 O(1),因为所有操作仅涉及基本的算术运算和条件判断,无需循环或其他复杂操作。

    转载地址:http://azcs.baihongyu.com/

    你可能感兴趣的文章
    php 接口类与抽象类的实际作用
    查看>>
    PHP 插入排序 -- 折半查找
    查看>>
    PHP 支持8种基本的数据类型
    查看>>
    php 放大镜,放大镜放大图片效果
    查看>>
    php 数据库 表格数据,php数据库到excel表格-php怎么把数据库数据放到表格里
    查看>>
    PHP 数据库连接池实现
    查看>>
    php 数组 区别,PHP中数组的区别
    查看>>
    PHP 数组怎么添加一个元素
    查看>>
    PHP 文件上传
    查看>>
    PHP 文件操作
    查看>>
    php 文字弹幕效果代码,HTML5文字弹幕效果
    查看>>
    php 时间日期函数,获取今天开始时间,结束时间
    查看>>
    PHP 构造函数的重载
    查看>>
    php 标准规范
    查看>>
    PHP 浮点型精度运算相关问题
    查看>>
    php 浮点型计算精度问题
    查看>>
    php 特定时间段统计,jpgraph某个时间段的数据统计
    查看>>
    php 生成csv mac下乱码
    查看>>
    php 生成证书 签名及验签
    查看>>
    php 的rsa加密与解密
    查看>>