博客
关于我
【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/

    你可能感兴趣的文章
    OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
    查看>>
    OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
    查看>>
    OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
    查看>>
    OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
    查看>>
    OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
    查看>>
    oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
    查看>>
    OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
    查看>>
    OAuth2:项目演示-模拟微信授权登录京东
    查看>>
    OA系统多少钱?OA办公系统中的价格选型
    查看>>
    OA系统选型:选择好的工作流引擎
    查看>>
    OA让企业业务流程管理科学有“据”
    查看>>
    OA项目之我的会议(会议排座&送审)
    查看>>
    OA项目之我的会议(查询)
    查看>>
    Object c将一个double值转换为时间格式
    查看>>
    object detection之Win10配置
    查看>>
    object detection训练自己数据
    查看>>
    object detection错误Message type "object_detection.protos.SsdFeatureExtractor" has no field named "bat
    查看>>
    object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    查看>>
    object detection错误之no module named nets
    查看>>
    Object of type 'ndarray' is not JSON serializable
    查看>>