LeetCode-矩形重叠
题目描述:
矩形以列表 [x1, y1, x2, y2]
的形式表示,其中 (x1, y1)
为左下角的坐标,(x2, y2)
是右上角的坐标。
如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。
给出两个矩形,判断它们是否重叠并返回结果。
示例:
输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]
输出:true
输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]
输出:false
解题思路:
第一种(考虑边界值):
思路:我们可以在平面建一个坐标系,画出 rec2 的矩形,坐标分别为(rec2[0], rec2[1], rec2[2], rec2[3]),现在我们考虑不重叠情况。当 rec1 和 rec2 不发生重叠时,rec1 可以在 rec2 的 上、下、左、右。这里以左边为例(其他别思路相同):当 rec1 在 rec2 的左边时,rec1 右上角的 x 坐标(即:rec1[2])应该小于等于 rec2 的左下角的 x 坐标(即:rec2[0]), 表达式为:rec1[2] <= rec2[0]。其他方向思路相同。
rec1[2] <= rec2[0] # 左侧
rec1[0] >= rec2[2] # 右侧
rec1[1] >= rec2[3] # 上侧
rec1[3] <= rec2[1] # 下侧
代码:
from typing import List
def isRectangleOverlap(rec1: List[int], rec2: List[int]) -> bool:
return not (
rec1[2] <= rec2[0] or
rec1[0] >= rec2[2] or
rec1[1] >= rec2[3] or
rec1[3] <= rec2[1]
)
print(isRectangleOverlap(rec1 = [0,0,2,2], rec2 = [1,1,3,3])) # True
第二种(考虑重叠):
思路:画上一个平面坐标系,将 rec1 和 rec2 的矩形的部分面积相重叠,将两个矩形的 “左下角” “右上角” 的坐标投射到 x、y轴上,可以看到在 x 、y轴上,两者会有交集。由数学知识可得,当 min(rec1[2], rec2[2]) > max(rec1[0], rec2[0]) 时,在x轴上有交集,当 min(rec1[3], rec2[3]) > max(rec1[1], rec2[1]) 时,在y轴上右交集。
代码:
from typing import List def isRectangleOverlap(rec1: List[int], rec2: List[int]) -> bool:
return (min(rec1[2], rec2[2]) > max(rec1[0], rec2[0])
and min(rec1[3], rec2[3]) > max(rec1[1], rec2[1]))
print(isRectangleOverlap(rec1 = [0,0,2,2], rec2 = [1,1,3,3])) # True
LeetCode-矩形重叠的更多相关文章
- [LeetCode] Rectangle Overlap 矩形重叠
A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...
- leetcode 签到 836. 矩形重叠
836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...
- LeetCode 836. 矩形重叠
题目链接:https://leetcode-cn.com/problems/rectangle-overlap/ 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左 ...
- Java实现 LeetCode 836 矩形重叠(暴力)
836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...
- [Swift]LeetCode836. 矩形重叠 | Rectangle Overlap
A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...
- [LeetCode] 矩形面积
题目链接: https://leetcode-cn.com/problems/rectangle-area 难度:中等 通过率:41.3% 题目描述: 在 二维 平面上计算出两个 由直线构成的 矩形重 ...
- libgdx判断矩形重叠碰撞
有两种方式. 1. 排除法,排除四种不可能重叠的情况就是了. public static boolean IsOverlap( Rectangle rect1, Rectangle rect2 ){ ...
- hdu2056 矩形重叠面积(水题)
题意: 给你两个矩形,问你他们的重叠面积是多少. 思路: 这两个矩形是平行x和y轴的,所以水题,不解释. #include<stdio.h> typedef stru ...
- hdu1255 扫描线,矩形重叠面积(两次以上)
题意: 给你n个矩形,然后问你这n个矩形所组成的画面中被覆盖至少两次的面积有多大. 思路: 和1542差距并不是很大,大体上还是离散化+线段树扫面线,不同的地方就是这个题目要求 ...
- 218. The Skyline Problem *HARD* -- 矩形重叠
A city's skyline is the outer contour of the silhouette formed by all the buildings in that city whe ...
随机推荐
- 领域驱动(DDD)之我见,基于Golang实现
分享一点不成熟的理解,还请本着交流进步的大原则喷之.从去年开始接触和套用DDD以来,已经有1年多时间了.也先后在2个生产项目中主导应用. 一.一些概念 DDD经典分层: 分层架构的一个重要原则是:每层 ...
- 吴裕雄--天生自然python学习笔记:Python3 数据结构
列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. list.append(x) 把一个元素添加到列表的结尾,相当于 a[len ...
- HashMap底层分析
以下基于 JDK1.7 分析. 如图所示,HashMap 底层是基于数组和链表实现的.其中有两个重要的参数: 容量 负载因子 容量的默认大小是 16,负载因子是 0.75,当 HashMap 的 si ...
- 转:zabbix 更改maps图标
更改Zabbix map图标 Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况.系统默认的图标比较简陋,如图十一所示.通过更改系 ...
- Unique Snowflakes(窗口滑动)
题目: Emily the entrepreneur has a cool business idea: packaging and selling snowflakes. She has devis ...
- Android API Levels
Android API Levels(转) 在本文中 API的级别是什么? 在Android中使用API级别 开发者需要考虑的内容 应用程序的向前兼容性 应用程序的向后兼容性 平台版本和API级别的选 ...
- C++扬帆远航——19(斐波那契数列第20项)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:fib.cpp * 作者:常轩 * 微信公众号:Worldhel ...
- 小程序在ios10.2系统上兼容
1. 定位元素在ios10.2系统上出现样式问题??? 没错,就是在测试在侧道ios10.2系统时发现了样式错误的问题,比如一个Swiper中,最后一个展示有问题. 这是啥原因❓❓❓❓❓❓ 大写的问 ...
- 将mysql数据库集成到idea中
将mysql数据库集成到idea中
- 快速上手百度大脑EasyDL专业版·物体检测模型(附代码)
作者:才能我浪费991. 简介:1.1. 什么是EasyDL专业版EasyDL专业版是EasyDL在2019年10月下旬全新推出的针对AI初学者或者AI专业工程师的企业用户及开发者推出的A ...