LeetCode——223. 矩形面积[Rectangle Area][中等]——分析及代码[C++]

  • 一、题目
  • 二、分析及代码
    • 1. 几何计算
      • (1)思路
      • (2)代码
      • (3)结果
  • 三、其他

一、题目

给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积。

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rectangle-area
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、分析及代码

1. 几何计算

(1)思路

根据题意,矩形覆盖的总面积 = 矩形一的面积 + 矩形二的面积 - 矩形重合部分的面积,直接结合几何方法计算即可。

(2)代码

class Solution {public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 = (ax2 - ax1) * (ay2 - ay1), area2 = (bx2 - bx1) * (by2 - by1);//矩形1、矩形2的面积int overArea = max(0, min(ax2, bx2) - max(ax1, bx1)) * max(0, (min(ay2, by2) - max(ay1, by1)));//矩形重合部分的面积return area1 + area2 - overArea;//矩形覆盖的总面积}
};

(3)结果

执行用时 :12 ms,在所有 C++ 提交中击败了 24.68% 的用户;
内存消耗 :6 MB,在所有 C++ 提交中击败了 7.93% 的用户。

三、其他

暂无。

LeetCode——223. 矩形面积(Rectangle Area)[中等]——分析及代码(C++)相关推荐

  1. LeetCode——1834. 单线程 CPU(Single-Threaded CPU)[中等]——分析及代码(Java)

    LeetCode--1834. 单线程 CPU[Single-Threaded CPU][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 优先队列 (1)思路 (2)代码 (3)结果 ...

  2. Java实现 LeetCode 223 矩形面积

    223. 矩形面积 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. Rectangle Area 示例: 输入: -3, 0, 3, 4 ...

  3. LeetCode 223. 矩形面积

    1. 题目 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. 示例: 输入: -3, 0, 3, 4, 0, -1, 9, 2 输出: 4 ...

  4. Leetcode 223. 矩形面积 解题思路及C++实现

    解题思路: 着重研究一下矩形四个顶点坐标的大小关系. if 条件语句中判断是否出现不重叠的情况. 当出现重叠时,需要找出重叠矩形的四个顶点坐标:在小的横坐标中找出更大者,就是重叠矩形中较大的横坐标值 ...

  5. LeetCode—5757. 矩阵中最大的三个菱形和(Get Biggest ...)[中等]—分析及代码(Java)

    LeetCode--5757. 矩阵中最大的三个菱形和[Get Biggest Three Rhombus Sums in a Grid][中等]--分析及代码[Java] 一.题目 二.分析及代码 ...

  6. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  7. LeetCode——1849. 将字符串拆分为递减的连续值(Splitting a String Into Descending Consecutive Val..)[中等]——分析及代码(Java)

    LeetCode--1849. 将字符串拆分为递减的连续值[Splitting a String Into Descending Consecutive Values][中等]--分析及代码[Java ...

  8. LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)

    LeetCode--1104. 二叉树寻路[Path In Zigzag Labelled Binary Tree][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 按位置求解 (1 ...

  9. LeetCode——1824. 最少侧跳次数(Minimum Sideway Jumps)[中等]——分析及代码(Java)

    LeetCode--1824. 最少侧跳次数[Minimum Sideway Jumps][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(二维数组) (1)思路 (2)代 ...

最新文章

  1. CDN 监控系统(二)
  2. python代码阅读技巧_30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!...
  3. C++ const 关键字小结
  4. 常见的8个前端防御性编程方案
  5. adurnio 单片机_单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码,proteus仿真文件...
  6. 如果深入学习前端,大佬给你总结了几个技巧!
  7. 惊!Python能够检测动态的物体颜色!
  8. 解决文件下载在火狐浏览器出现中文文件名乱码的方法
  9. Visual Studio Code(VS code)简单使用入门以及常用快捷键
  10. VMware12序列号
  11. 先锋linux 64位安装包的安装使用
  12. 什么是物联网数据采集网关?物联网数据采集网关的特点
  13. FLV方式实现网页FFmpeg推流无插件播放
  14. 机器学习入门-强烈推荐-经典好文
  15. 火车头 mysql发布模块_怎么使用火车采集器中的数据库发布模块编辑器
  16. 自动反冲洗叠片过滤器
  17. python glob.glob()
  18. 减去“商品名”这层包装外衣,让你看清“药品名”的真谛 - 看看你的感冒在中西医各怎样解读与配药
  19. Mac下brew及brew-cask安装使用
  20. 非常好看的二次元导航源码

热门文章

  1. linux 上端口占用的程序
  2. ipynb转py命令
  3. Beyond Compare 的开源替代工具meld
  4. 【PDN仿真笔记9-使用Sigrity PowerDC进行IR Drop仿真的方法】
  5. Java —— 冒泡排序
  6. 【MediaWiki之windows安装】MediaWiki创建与基础使用指南
  7. 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]
  8. 哪看计算机的网络密码,如何检查计算机的无线网络密码?两种查看方法
  9. IE以及其他浏览器主页被劫持到www.2345.com/?kunown的解决办法
  10. 《软技能》读书笔记(上)