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

news2024/11/26 4:50:19

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

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

第一个矩形由其左下顶点 (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.coloradmin.cn/o/742909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统驱动作业

作业1 myled_time.c #include <linux/init.h> #include <linux/module.h> #include<linux/of.h> #include<linux/gpio.h> #include<linux/of_gpio.h> #include<linux/timer.h>struct device_node *dnode; unsigned int gpiono; struct t…

Redis — 不仅仅是缓存

1*qIy3PMmEWNcD9Czh_21C8g.png Redis是一种快速、开源的内存键值&#xff08;NoSQL&#xff09;数据库&#xff0c;远远超越了缓存的功能。Redis使用RAM进行操作&#xff0c;提供亚毫秒级的响应时间&#xff0c;支持每秒数百万次请求。Redis主要用于缓存&#xff0c;但它也可以…

【CSS】文字渐变色

CSS设置文字渐变色 background-image: -webkit-linear-gradient(bottom,red,#fd8403,yellow); -webkit-background-clip: text; // 设置背景作用域 -webkit-text-fill-color: transparent;

docker数据卷权限管理--理论和验证

一、Docker容器中用户权限管理 Linux系统的权限管理是由uid和gid负责&#xff0c;Linux系统会检查创建进程的uid和gid&#xff0c;以确定它是否有足够的权限修改文件&#xff0c;而非是通过用户名和用户组来确认。 同样&#xff0c;在docker容器中主机上运行的所有容器共享同一…

【DC系列06】DC-6靶机复盘

【DC系列06】DC-6靶机复盘 我们打开这个靶机后首先还是先对靶机进行一个ip扫描&#xff0c;然后再单独对这个ip进行一个全局扫描。 扫描后ip地址是192.168.102.147。 我们再单独扫描一下 nmap -A 192.168.102.147 -p-这个靶机有一个特点就是扫描到ip后&#xff0c;你需要往…

vulnhub靶机渗透:PWNLAB: INIT

PWNLAB: INIT 靶机环境介绍nmap扫描端口扫描服务扫描漏洞扫描扫描总结 80端口目录爆破LFI利用 3306端口回到80端口文件上传 获得立足点横向移动提权总结参考 靶机环境介绍 https://www.vulnhub.com/entry/skytower-1,96/ 靶机IP&#xff1a;192.168.56.103 kali IP&#xff…

OceanBase 特殊的 INT 与时间类型隐式转换问题

本文作者分享了Oceanbase时间与数值类型隐式转换导致查询结果不符合预期或“不正确”问题的排查思路。 作者&#xff1a;任仲禹 爱可生 DBA 团队成员&#xff0c;擅长故障分析和性能优化&#xff0c;文章相关技术问题&#xff0c;欢迎大家一起讨论。 本文来源&#xff1a;原创投…

create-react-app -V 报错无法将“create-react-app”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

create-react-app -Vcreate-react-app : 无法将“create-react-app”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果 包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + create-react-app -V + ~~~~~~~~~~~~~~~~+ CategoryInfo …

移动端 van-datetime-picker 组件不支持选择秒,自己写组件支持选择 “年月日时分秒”

需求 使用 van-datetime-picker 组件写时间选择时&#xff0c;不支持选择 “秒” 要求能够选择精确到秒 代码 封装组件 TimePicker <template><div><!-- 弹出层 --><van-popup get-container"body" v-model"isPicker" position&qu…

实时数仓-DWS层

理论依据&#xff1a;指标体系 如果表有相似&#xff0c;可以抽取成一张表 轻度聚合&#xff1a;比如聚合10秒的先放到DWS&#xff0c;这样ADS在计算的时候&#xff0c;会更快

计讯物联5G工业路由器加速赋能公交车监控系统解决方案智能升级

一、方案概述 为提升公交车智能化管理水平为目的&#xff0c;保障公交车营运人员和乘客的安全&#xff0c;计讯物联以公交车智能调度营运为核心&#xff0c;推出计讯物联5G公交车一站式解决方案&#xff0c;通过构建感知层、传输层、设备层、应用层四层架构&#xff0c;通过感…

将名为“普通高等学校本科专业目录.pdf”的pdf文件转换成csv文件

文章目录 任务描述2023年普通高等学校本科专业目录pdf链接代码代码解析运行截图 任务描述 将名为“普通高等学校本科专业目录.pdf”的pdf文件转换成csv文件。这个pdf每页是个表格&#xff0c;表格有7列。 下面是pdf的第一页和第二页&#xff1a; 2023年普通高等学校本科专业…

10.3.2 【Linux】历史命令:history

[dmtsaistudy ~]$ alias hhistory 在正常的情况下&#xff0c;历史命令的读取与记录是这样的&#xff1a; 当我们以 bash 登陆 Linux 主机之后&#xff0c;系统会主动的由主文件夹的 ~/.bash_history 读取以前曾经下过的指令&#xff0c;那么 ~/.bash_history 会记录几笔数据呢…

microblaze生成download.bit 报错:Program FPGA failed Reason: couldn‘t open......

报错信息&#xff1a; couldn’t open “E:/Xilinx_Project/……/……/…….sdk/top_wrapper_hw_platform_0/download.bit”: no such file or directory [Updatemem 57-153] Failed to update the BRAM INIT strings for E:\Xilinx_Project\……\……\…….sdk\……\Debug\……

基于vue的地方美食分享网站(spring boot)

本项目在开发和设计过程中涉及到原理和技术有&#xff1a;B/S、java技术和MySQL数据库等等。开发步骤如下&#xff1a; 绪论&#xff1b;剖析项目背景&#xff0c;说明研究的内容。 开发技术&#xff1b;系统主要使用了java技术&#xff0c;b/s模式和myspl数据库.

react-基础-01

vue tutorial 上的小demo 改用react 写法 属性绑定 <div className{xx}></div>事件绑定 import React, { useState } from react;export function App(props) {const [count, setCount] useState(0)function add() {setCount(count 1)}return (<div classN…

Broadcast 广播使用详解

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Broadcast概述二、Broadcast的注册三、Broadcast的注册类型四、静态注册开机广播的实现五、动态监听亮灭屏幕广播实现六、广播的发送方法七、参考文…

【Hello mysql】 mysql的内置函数

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的基内置函数 mysql的内置函数 日期函数获取年月日获取时分秒获取时间戳在日期的基础上加上日期在日期的基础上减去日期计算两个日期之差创建一张表 记录生日创建一个留言表 字符串函数获取emp表的ename列的字符集…

arm学习stm32芯片学习方波启动蜂鸣器,马达,风扇

main.c #include "pwm.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); } int main() {//蜂鸣器初始化hal_pwm_beep_init1();//马达hal_pwm_motor_init1();//风扇hal_pwm_blower_…

MySQL 06 :多表查询

MySQL 05 :多表查询 加where过滤 老韩分析 1。雇员名&#xff0c;雇员工资来自emp表 2。部门的名字来自dept表 3。 需求对emp和dept查询 ename&#xff0c;sal&#xff0c;dname&#xff0c;deptno 4。 当我们需要指定显示某个表的列是&#xff0c;需要表&#xff0c; 说明 …