【矩形面积】

news2024/11/18 20:17:49

题目来源:https://leetcode.cn/problems/rectangle-area/

目录

  • 矩形面积


矩形面积

题目介绍

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

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

  • 第一个矩形由其左下顶点 (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
解释: 最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例1:

输入: ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
输出: 16

思路:
这是一道偏数学几何的编程题,题目给定两个矩形,要求返回覆盖总面积,所以需要考虑以下几种情况:

  1. 两个矩形相交,总覆盖面积=矩形1+矩形2-重叠面积
    在这里插入图片描述
  2. 两个矩形相交,总覆盖面积=矩形1+矩形2
    在这里插入图片描述
  3. 大矩形包含小矩形,总覆盖面积=max(矩形1, 矩形2)
    在这里插入图片描述

可以发现,有三种情况,有三个公式,所以说每次都需要判断三种情况然后进行计算。这样似乎有点麻烦,其实仔细观察不难发现这三个公司其实可以合并,第二种情况重叠面积为0,所以可以和第一种情况合并,第三种情况重叠面积就是小矩形,所以得出总覆盖面积=大矩形+小矩形-小矩形,还是可以和第一种情况合并,最终得出公式为总覆盖面积=矩形1+矩形2-重叠面积
接下来我们需要把核心放在求重叠面积上。对于第二种情况,我们可以先判断两个矩形是否重叠,这要如何判断呢?不重叠有以下四种情况
1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述

根据上面四个判断就能判断两个矩形是否重叠,如果不重叠,就需要计算重叠矩形面积了,先观察下图:
在这里插入图片描述
通过上图方式可以推导出重叠矩形的左下顶点和右上顶点,这要就可以计算出矩形面积(这个很简单,不用细说了)
根据上面一些推导再结合覆盖面积计算公式即可求出最终答案
代码实现:

class Solution {
public:
    int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        int area1 = (ay2-ay1)*(ax2-ax1), area2 = (by2-by1)*(bx2-bx1);
        // 判断是否无重叠
        if (bx1 >= ax2 || bx2 <= ax1 || by1 >= ay2 || by2 <= ay1) {
            return area1 + area2;
        }
        int overlappingarea = (min(ax2, bx2)- max(ax1, bx1))*(min(ay2, by2)-max(ay1, by1));
        return area1-overlappingarea+area2;
    }
};

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

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

相关文章

数字化转型危与机,20年老厂的升级之路

“投资大、周期长、见效慢”&#xff0c;是每一家企业在考虑数字化战略时&#xff0c;都会纠结的问题。 打江山容易&#xff0c;守江山难 企业在快速扩张的过程中&#xff0c;往往可以不需要过多的考虑细节的问题&#xff0c;跑马圈地的打法会更加有效。 但是市场占有量开始饱…

JS Array数组常用方法

会改变原数组的方法 1、array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】 2、array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】 3、array.pop()【从数组末尾删除元素,不需要传参】 4、array.shift()【从数组首位开始删除元素,不需要传参】 5、arra…

数据处理方法(LFSR)

一、线性反馈移位寄存器&#xff08;LFSR&#xff09;编码概述 线性反馈移位寄存器&#xff08;LFSR&#xff09;&#xff1a;通常由移位寄存器和异或门逻辑组成。其主要应用在&#xff1a; 伪随机数&#xff0c;伪噪声序列&#xff0c;计数器&#xff0c;BIST&#xff0c;数据…

树脂吸附含钴废水的实际案例

三元聚合物-锂电池是指正极材料使用锂、镍、钴、锰三元正极材料的锂电池&#xff0c;锂离子电池的正极材料有很多种&#xff0c;主要有钴酸锂、锰酸锂、镍酸锂、三元材料、磷酸铁锂等。用三元材料作为正极材料的动力锂电池&#xff0c;近年来凭借其容量高、循环稳定性&#xff…

Java笔记一(黑马)

目录 一.标准的javaBean二.反射1.获取class对象的三种方式2.反射获取构造方法3.反射获取成员变量4.反射获取成员方法 三.网络编程TCP Serve/ClientNIO框架Netty 一.标准的javaBean package com.itheima.domain;public class Student {//1.成员变量私有化//2.空参&#xff0c;带…

数据结构-树及相关算法

二叉树 递归算法的关键要明确函数的定义&#xff0c;相信这个定义&#xff0c;而不要跳进递归细节。 写二叉树的算法题&#xff0c;都是基于递归框架的&#xff0c;我们先要搞清楚 root 节点它自己要做什么&#xff0c;然后根据题目要求选择使用前序&#xff0c;中序&#xff0…

colmap使用教程

COLMAP 是具有图形和命令行界面的通用运动结构 (SfM) 和多视图立体 (MVS) 管道。 它为有序和无序图像集的重建提供了广泛的功能。 常见的基于nerf算法均需要colmap来计算位姿 安装colmap&#xff1a; conda install colmap 需要使用python9 step1&#xff1a;准备多视角图…

第十三节 I/O流与文件操作

文件读写 输入输出流 文本文件 一个字节一个字节写 8位十进制最大255 int read() throws IOException 字节 java.io.OutputStream 将十进制数按字节 用文件的类 表达文件 1.txt 相对路径 &#xff1a;工程是同级的 绝对路径C盘下 D 万物皆对象 都能封装成对象…

xss-flash钓鱼配合msf捆绑上线

这里写目录标题 一&#xff0c;后门文件生成与制作二&#xff0c;flash安装钓鱼网站搭建三&#xff0c;监听四&#xff0c;钓鱼 一&#xff0c;后门文件生成与制作 打开kali&#xff0c;查看ip add 查看 ip 地址为 192.168.1.8 输入 msfconsole 1.生成后门 msfvenom -p window…

LeetCode 1026. Maximum Difference Between Node and Ancestor【DFS,BFS,树】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Direct3D 12——模板——平面镜效果

1.将实物照常渲染到后台缓冲区内&#xff08;不包括镜子&#xff09;。注意&#xff0c;此步骤不修改模 板缓冲区。 2.清理模板缓冲区&#xff0c;将其整体置零。 将实物都绘制到后台缓冲区中&#xff0c;并将模板缓冲区清理为0 &#xff08;用浅灰色来表示&#xff09;。 绘…

socked编程

socket是什么&#xff1f;套接字是什么&#xff1f; 什么是 socket&#xff1f; socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定&#xff0c;一台…

Motion Planning学习笔记一:配置空间、图、图搜索、图遍历

学习高飞博士的路径规划课程所总结的学习笔记。 目录 1、配置空间&#xff08;Configuration Space, C-space&#xff09; 2、图&#xff08;Graphs&#xff09; 3、图搜索&#xff08;Graph Search Basis&#xff09; 3.1、总体框架 3.2、两种基本的图遍历算法 3.3、启…

漫谈大数据 - HiveSQL总结(二)查询操作

导语&#xff1a;HiveSQL各关键字详解&#xff0c;hive函数大全&#xff0c;类似于个人记录工具书&#xff0c;后续遇到其他的也会继续加进来。 有关hive库表操作请见上篇&#xff1a;漫谈大数据 - HiveSQL总结&#xff08;一&#xff09;库表操作_昊昊该干饭了的博客-CSDN博客…

一条SQL如何被MySQL架构中的各个组件操作执行的?

文章目录 1. 单表查询SQL在MySQL架构中的各个组件的执行过程2. SELECT的各个关键字在哪里执行&#xff1f;3. 表关联查询SQL在MySQL架构中的各个组件的执行过程4. LEFT JOIN将过滤条件放在子查询中再关联和放在WHERE子句上有什么区别&#xff1f;5. 聚集索引和全表扫描有什么区…

推动开发者平台本土化,高通加速中国XR内容生态发展

随着VR和AR技术快速发展&#xff0c;产品不断成熟&#xff0c;体验也变得越来越优秀。据悉&#xff0c;Meta Quest系列VR头显出货量超2000万台&#xff0c;基本证明了VR开始在消费类电子产品中占据一席之地。与此同时&#xff0c;近两年AR眼镜也在逐渐升温&#xff0c;成为了创…

day17_异常

今日内容 零、 复习昨日 一、作业 二、异常 三、自定义异常 零、 复习昨日 见晨考,重点是String类的方法 StringBuffer和StringBuiler面试问 日期解析和格式化 int i Integer.parseInt(“111”); 一、作业 略,见答案二、异常 2.1 介绍 异常,就是程序出现的不正常的情况. 2.2…

RPA流程自动化技术在金融机构的落地方案详解

金融机构在面向数字化运营的转型过程中&#xff0c;需将智能流程自动化技术整合到数字化转型战略中&#xff0c;规划建设统一的企业流程自动化处理平台&#xff0c;作为数字化运营的辅助支撑类系统&#xff0c;明确流程治理方法和运营模式&#xff0c;确保足够的规模弹性&#…

【深度学习】Softmax回归及前馈神经网络

1 实验内容简介 1.1 实验目的 &#xff08;1&#xff09;熟练掌握tensor相关各种操作&#xff1b; &#xff08;2&#xff09;掌握广义线性回归模型&#xff08;logistic模型、sofmax模型&#xff09;、前馈神经网络模型的原理&#xff1b; &#xff08;3&#xff09;熟练掌…

第一章: uniapp引入axios异步框架

第一章&#xff1a; uniapp引入axios异步框架 在学习uniapp的过程中&#xff0c;发现uniapp框架默认集成request请求框架存在问题&#xff0c;发送请求时在header中塞入token值&#xff0c;而后台接收不到&#xff0c;也就是说uniapp默认的request请求框架&#xff0c;不支持在…