博客
关于我
【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中Closure::bindTo的用法分析
    查看>>
    php中curl得使用
    查看>>
    PHP中curl特性
    查看>>
    PHP中date时间不对
    查看>>
    PHP中dirname(__FILE__)的意思
    查看>>
    PHP中extract()函数的妙用
    查看>>
    PHP中fileinfo的作用以及怎么开启fileinfo
    查看>>
    PHP中file_get_contents如何带上cookies
    查看>>
    PHP中header的作用
    查看>>
    PHP中implode()和explode()
    查看>>
    PHP中ob系列函数讲解(浏览器缓存技术)
    查看>>
    PHP中serialize和json序列化与反序列化的区别
    查看>>
    Redis事务处理
    查看>>
    php中传值与传引用的区别是什么
    查看>>
    php中使用ajax进行前后端json数据交互
    查看>>
    Redis事务和锁操作
    查看>>
    Redis事务中的watch机制-从实例入手学习
    查看>>
    PHP中如何得到数组的长度
    查看>>
    Redis 集群模式下一个 Master 挂掉后如何选举?
    查看>>
    php中引入文件几种方式的区别
    查看>>