题目链接: https://leetcode-cn.com/problems/rectangle-area

难度:中等

通过率:41.3%

题目描述:

在 二维 平面上计算出两个 由直线构成的 矩形重叠后形成的总面积。

每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

示例:

输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45

说明: 假设矩形面积不会超出 int 的范围。

思路:

这道题,把问题考虑清楚就不难了!

首先,我们调整两个矩形,让第一个矩形是靠最左边的;

其次,先考虑没有重叠的情况,有三种情况,如图所示:

  1. rectangle1的下边都大于(等于)rectangle2的上边,即 B >= H
  2. rectangle1的右边都小于(等于)rectangle2的左边,即 C >= E
  3. rectangle1的上边都小于(等于)rectangle2的下边,即 B >= H

最后, 要考虑重叠的情况,这种其实很好考虑,因为一定有重叠,所以可以找到上下左右边界

上边界,取两个矩形的上边界的最小值

下边界,取两个矩形的下边界的最大值

左边界,取两个矩形的左边界的最大值

右边界,取两个矩形的右边界的最小值

得到重叠面积,只需要两个矩形相加减去重叠面积即可!


有疑惑的地方,要留言哦~

代码:

class Solution:
def computeArea(self, A: int, B: int, C: int, D: int, E: int, F: int, G: int, H: int) -> int:
# 调整两个矩形位置, 让第一个矩形靠最左边
if A > E:
return self.computeArea(E, F, G, H, A, B, C, D)
# 没有重叠的情况
if B >= H or D <= F or C <= E:
return abs(A - C) * abs(B - D) + abs(E - G) * abs(F - H)
# 重叠情况
# xia
down = max(A, E)
# shang
up = min(C, G)
# zuo
left = max(B, F)
# you
right = min(D, H)
return abs(A - C) * abs(B - D) + abs(E - G) * abs(F - H) - abs(up - down) * abs(left - right)

[LeetCode] 矩形面积的更多相关文章

  1. [LeetCode] Rectangle Area 矩形面积

    Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...

  2. [LeetCode] 850. Rectangle Area II 矩形面积之二

    We are given a list of (axis-aligned) rectangles.  Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...

  3. [LeetCode] 223. Rectangle Area 矩形面积

    Find the total area covered by two rectilinearrectangles in a 2D plane. Each rectangle is defined by ...

  4. LeetCode 223. 矩形面积(Rectangle Area)

    223. 矩形面积 223. Rectangle Area 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. LeetCode2 ...

  5. [LeetCode] 223.矩形面积

    题目链接: https://leetcode-cn.com/problems/rectangle-area 难度:中等 通过率:41.3% 题目描述: 在 二维 平面上计算出两个 由直线构成的 矩形重 ...

  6. Java实现 LeetCode 223 矩形面积

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

  7. [LeetCode]223. Rectangle Area矩形面积

    /* 像是一道数据分析题 思路就是两个矩形面积之和减去叠加面积之和 */ public int computeArea(int A, int B, int C, int D, int E, int F ...

  8. [Swift]LeetCode223. 矩形面积 | Rectangle Area

    Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...

  9. POJ 1151 Atlantis(线段树-扫描线,矩形面积并)

    题目链接:http://poj.org/problem?id=1151 题目大意:坐标轴上给你n个矩形, 问这n个矩形覆盖的面积 题目思路:矩形面积并. 代码如下: #include<stdio ...

随机推荐

  1. poj 1017 装箱子(模拟+贪心)

    Description A factory produces products packed in square packets of the same height h and of the siz ...

  2. Linux任务计划及周期性任务执行:at、crontab命令

    一.概述 未来的某时间点执行一次某任务:at, batch 周期性运行某任务:crontab 这两个任务的执行结果:会通过邮件发送给用户 (本地终端用户之间的邮件通知) centos 5,6,7默认开 ...

  3. eclipse内存溢出 参数配置

    http://blog.csdn.net/liuhenghui5201/article/details/50783444

  4. linux监控系统性能命令

    Linux系统性能10条命令监控 https://www.cnblogs.com/qmfsun/p/5729442.html 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. ...

  5. C++入门经典-例3.23-使用嵌套循环输出乘法口诀表

    1:代码如下: // 3.23.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iomanip> #incl ...

  6. 自定义实现Java动态代理

    转自:https://www.cnblogs.com/rjzheng/p/8750265.html 一 借助JDK的API实现: 1.先创建一个接口,并实现它 public interface Per ...

  7. awk命令2

    提取文件后四行 注释:NR==FNR表示第一个文件,执行{a++},计算出第一个文件10的行数,NR!=FNR表示第二个文件10,执行{if(FNR<=a-4){print $0}},打印出第二 ...

  8. leetcode 140 单词拆分2 word break II

    单词拆分2,递归+dp, 需要使用递归,同时使用记忆化搜索保存下来结果,c++代码如下 class Solution { public: //定义一个子串和子串拆分(如果有的话)的映射 unorder ...

  9. leetcode241 为运算表达式设计优先级

    class Solution(object): def diffWaysToCompute(self, input): """ :type input: str :rty ...

  10. linux_Ubuntu相对路径和绝对路径

    绝对路径 从/目录开始描述的路径为绝对路径,如: cd /home ls /usr 相对路径 从当前位置开始描述的路径为相对路径,如: cd ../../ ls abc/def .和.. 每个目录下都 ...