矩形面积 (力扣)数学推理 JAVA

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。

每个矩形由其 左下 顶点和 右上 顶点坐标表示:

第一个矩形由其左下顶点 (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

提示:

-10^4 <= ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 <= 10^4

解题思路:

1.两个矩形的关系无非分为相交与不相交两种

2.如果有重合部分,那么重合部分必然也是矩形

3.计算两个矩形面积 - 重合部分面积

由上图可知:
重合部分矩形的左下角横坐标 = max(ax1, bx1),纵坐标 = max(ay1, by1)
重合部分矩形的右下角横坐标 = min(ax2, bx2),纵坐标 = min(ay2, by2)

4.最后计算重合部分面积是否大于0

代码:

class Solution {public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area = 0;int area1 = (ax2 - ax1) * (ay2 - ay1);  int area2 = (bx2 - bx1) * (by2 - by1);int xx1 = Math.max(ax1, bx1);int yy1 = Math.max(ay1, by1);int xx2 = Math.min(ax2, bx2);int yy2 = Math.min(ay2, by2);int area3 = Math.max(xx2 - xx1, 0) * Math.max(yy2 - yy1, 0);return area1 + area2 - area3;}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19074.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AutoDL使用教程

AutoDl是一个租用GPU显卡的平台&#xff0c;我们可以在上面租用显卡。我训练模型的时候租用了一块V100。 下面介绍一下使用AutoDL 来租用GPU显卡&#xff0c;并将自己的代码上传&#xff0c;运行代码。 目录&#xff1a; 创建实例配置环境 pytorch环境上传文件运行代码 一、…

怎么制作查询成绩的网页?这个不用代码的方法你用过没?

作为一名老师&#xff0c;与家长沟通交流是日常工作中重要的一部分。特别是每次考完试后&#xff0c;家长都急切地想了解孩子的成绩&#xff0c;以便能及时了解孩子的学习情况并给予适当的支持和指导。然而&#xff0c;为了保护学生的隐私&#xff0c;大部分学校不公开张榜学生…

IP网络基础

文章目录 数据通信基础数据流方向&#xff08;工作模式&#xff09;网络和Internet简介网络&#xff1a;互联网&#xff1a;总结&#xff1a; 协议和标准标准化组织标准化组织——IETF标准的种类 IP网络基本架构 lP网络在现代社会中有着越来越重要的地位。本课程将介绍数据通信…

Sentry 监控 Docker 方式部署

一、简介 根据主篇 Sentry 监控部署与使用 流程&#xff0c;使用 Docker 方式 方式进行部署。 docker 方式 部署操作比较简单&#xff0c;也是 Sentry 官方 比较推崇的方式&#xff0c;直接按 Sentry On-Premise 提供的方式按部就班部署就好了。或者可直接参考 Docker 部署 Se…

系列五、RocketMQ集群搭建

一、概览 二、集群特点 2.1、NameServer NameServer是一个几乎无状态节点&#xff0c;可集群部署&#xff0c;节点之间无任何信息同步。 2.2、Broker Broker部署相对复杂&#xff0c;Broker分为Master与Slave&#xff0c;一个Master可以对应多个Slave&#xff0c;但是一个Sla…

【vs2022】cmake工程修改绝对路径为工程路径

以libuv为例&#xff0c;只需要修改一个工程文件即可 只需要修改 uv_a.vcxproj 修改内容 工程路径在src/ 同级别的out32/下 $(ProjectDir)… 即可回到 src/路径下。

在Linux中部署Ansible

Ansible是自动化运维工具&#xff0c;基于模块化工作&#xff0c;本身没有批量部署的能力。 Ansible只是提供一种框架&#xff0c;Ansible运行的模块才有批量部署的能力。 Ansible使用SSH协议对设备进行管理&#xff0c;只需在主控端部署Ansible环境&#xff0c;被控端无需做…

Oracle-RAC集群安装root.sh报错问题

问题背景: 在redhat 7.8上安装Oracle11G RAC集群&#xff0c;在节点一执行root.sh脚本时发生错误Disk Group OCRDG creation failed with the following message:ORA-15018: diskgroup cannot be created 问题分析: 从报错信息来看错误是在执行创建OCRDG磁盘组时失败&#xff0…

MySQL数据库,创建表及其插入数据和查询数据

首先&#xff0c;由上图创建表 mysql> create table worker(-> dept_id int(11) not null,-> emp_id int (11) not null,-> work_time date not null,-> salary float(8,2) not null,-> poli_face varchar(10) not null default 群众,-> name varchar(20…

机器学习多步时间序列预测解决方案

近年来&#xff0c;随着机器学习与深度学习的发展机器学习平台的成熟&#xff0c;数据科学家们不再需要关心底层的基础设施及构建复杂的训练与推理环境&#xff0c;从而可以把主要的时间与精力放在数据与算法本身。在机器学习变得更容易的今天&#xff0c;越来越多的传统行业已…

史上最细接口测试详解,接口测试从0到1实施,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口测试描述定…

Mysql之进阶宝典系列-视图

Mysql之进阶宝典系列-视图 一、视图是什么(what) 视图本质上是一个虚表&#xff0c;在数据库中不实际存在&#xff0c;它的所有数据来源于查询中所使用的表的数据&#xff0c;而且是在视图调用过程中动态生成的。视图只保存了SQL查询的逻辑&#xff0c;不保存SQL查询的结果。 …