223. 矩形面积 Python

这篇具有很好参考价值的文章主要介绍了223. 矩形面积 Python。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、题目描述

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

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

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

二、代码

代码如下:

class Solution:
    def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
        # 左下(ax1,ay1) 右上(ax2,ay2)
        # 左下(bx1,by1) 右上(bx2,by2)
        M = (ax2 - ax1)*(ay2 - ay1) + (bx2 - bx1)*(by2 - by1)
        print("max:", M)
        # 判断是否有重叠部分
        if ax1 > bx2 or bx1 > ax2 or ay1 > by2 or by1 > ay2:
            print(M)
            return M  # 没有重叠部分
        else:
            # 选取重叠部分的坐标(左下角和右上角坐标)
            # overlap_x1:这是重叠部分的左下角 x 坐标。选择较大的 x 值是为了确保左下角的 x 坐标位于重叠区域内。
            # overlap_y1:这是重叠部分的左下角 y 坐标。选择较大的 y 值是为了确保左下角的 y 坐标位于重叠区域内。
            # overlap_x2:这是重叠部分的右上角 x 坐标。选择较小的 x 值是为了确保右上角的 x 坐标位于重叠区域内。
            # overlap_y2:这是重叠部分的右上角 y 坐标。选择较小的 y 值是为了确保右上角的 y 坐标位于重叠区域内。
            overlap_x1 = max(ax1, bx1)
            overlap_y1 = max(ay1, by1)
            overlap_x2 = min(ax2, bx2)
            overlap_y2 = min(ay2, by2)

            overlap_width = overlap_x2 - overlap_x1
            overlap_height = overlap_y2 - overlap_y1

            print(M - overlap_width * overlap_height)
            return M - overlap_width * overlap_height

三、解题思路

本题解题思路是判断2个矩形是否有重叠部分,通过判断矩阵左下角和右上角的坐标来分析矩阵是否存在重叠,由于重叠的方式有多种,所以判断其不重叠的情况要比判断重叠时的情况方便,通过a矩形左下角坐标与b矩形右上角坐标进行判断能够快速知道不重叠时的情况。
如果不重叠,则最大面积则是2个矩形面积相加;
如果重叠了,则需要单独判断重叠部分矩形的左下角坐标和右上角坐标,坐标的选取要符合在重叠区域内的条件。最后单独计算出重叠矩阵的大小,最大面积为2个矩形面积相加后减去该重叠矩阵面积。文章来源地址https://www.toymoban.com/news/detail-693315.html

到了这里,关于223. 矩形面积 Python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode98:验证二叉搜索树,居然有这么简单的中等难度,白捡(用时击败100%)

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 做这道题之前,我反复审题,最后确认:没错,不存在什么坑,这道题确实非常非常简单,然而却被官方定义为 中等 难度 这一定是送分,白捡一道中等难度题,接下来,一起来轻松愉快的享受解题

    2024年02月09日
    浏览(36)
  • windows内存取证-中等难度-下篇

    上文我们对第一台Target机器进行内存取证,今天我们继续往下学习,内存镜像请从上篇获取,这里不再进行赘述​ 攻击者执行了net use z: 10.1.1.2c$ 指令将 10.1.1.2域控制器的C盘映射到本地的Z盘,并且使用了rar压缩工具将文件存储在 crownjewlez.rar里,所以密码就在这里了 将进程

    2024年02月05日
    浏览(40)
  • 生成窗口最大值数组【中等难度】

    给定一个整数数组 nums 和一个正整数 k,滑动一个大小为 k 的窗口,从数组的左边到右边,找到每个窗口中的最大值。 示例 1: 输入:nums = {1, 3, -1, -3, 5, 3, 6, 7} 、k = 3 输出:3 3 5 5 6 7 我们可以使用双端队列(deque)来解决这个问题。双端队列可以在两端进行插入和删除操作,

    2024年02月12日
    浏览(48)
  • 《Python网络程序设计(微课版)》223道习题参考答案

    推荐教材: 《Python网络程序设计(微课版)》,ISBN:978-7-3025-8312-7,董付国,清华大学出版社,2021年8月出版 配套资源: 教学大纲、450页PPT、91个例题源码、60段演示代码、20小时微课视频、223道章节习题答案。 选用教材的老师可以通过清华出版社渠道获取教学资源,可以通

    2023年04月09日
    浏览(50)
  • 二十五、SQL 数据分析实战(9个中等难度的SQL题目)

    现有一张用户使用 App 时间表 middle_app_login,middle_app_login 表的数据如下表所示: 【题目1】根据该表统计出每个用户每次退出App与下一次登录App间隔的平均时间,如果用户只登录过一次App,则不统计,要求输出的平均时间的单位为分钟,并将其四舍五入保留一位小数。输出内

    2024年02月12日
    浏览(86)
  • 趣说数据结构(练习2) —— 顺序表/链表力扣刷题(中等难度)

    力扣原题:https://leetcode.cn/problems/reverse-linked-list-ii/ 题目描述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left = right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5] 示例 2 输入:h

    2024年02月01日
    浏览(56)
  • 【蓝桥备赛】矩形总面积——计算几何

    矩形总面积 根据题意,两个矩形如果存在重叠部分,只会是这三种其一。不过再仔细观察这些边的关系,容易得到以下计算重叠区域大小的方法。 那么,这道题的解法就是,计算两个矩形的面积再减去重复部分(如果有重复部分的话) 看完下方的代码,可能有人奇怪为什么

    2024年01月24日
    浏览(50)
  • 定义矩形类,求其面积和周长(java)

    编写一个 矩形 类 R ectangle,该类拥有: 两个 成员变量 : Length(私有,双精度型); // 存放矩形的长;      Width(私有,双精度型); // 存放矩形的宽;       两个构造方法 :     1.Rectangle ( )            // 将高和宽设为0          2.Rectangle (double l,double W

    2024年04月12日
    浏览(39)
  • Python习题集001

    1.运用输入输出函数编写程序,将华氏温度转换为摄氏温度,换算公式:C=(F-32)*5/9,其中C为摄氏温度,F为华氏温度。 2.编写程序,根据输入的长和宽,计算矩形的面积并输出。 3.编写程序,输入三个学生的成绩计算平均分并输出。 6.为了给孩子储备教育基金,希望在孩子

    2023年04月14日
    浏览(37)
  • Python头歌合集(题集附解)

    目录 一、Python初识-基本语法  第1关:Hello Python!  第2关:我想看世界  第3关:学好Python  第4关:根据圆的半径计算周长和面积  第5关:货币转换  二、turtle简单绘图 第1关:英寸与厘米转换  第2关:绘制等边三角形  第3关:绘制两个叠加的等边三角形  第4关:绘制三个叠

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包