สี่เหลี่ยมผืนผ้าแทนด้วยรายการ [x1, y1, x2, y2] โดย (x1, y1) คือมุมล่างซ้าย และ (x2, y2) คือมุมบนขวา สองสี่เหลี่ยมทับซ้อนกันก็ต่อเมื่อพื้นที่การตัดกันเป็นบวก (แค่สัมผัสขอบหรือมุมไม่นับ)
ตัวอย่าง
R1 = [0,0,2,2], R2 = [1,1,3,3] → True (มีพื้นที่ทับซ้อน)
ขั้นตอนการแก้ปัญหา
สองสี่เหลี่ยม ไม่ ทับซ้อนกัน กรณีใดกรณีหนึ่งต่อไปนี้เป็นจริง:
R1[0] >= R2[2](R1 อยู่ขวา R2)R1[2] <= R2[0](R1 อยู่ซ้าย R2)R1[3] <= R2[1](R1 อยู่ล่าง R2)R1[1] >= R2[3](R1 อยู่บน R2)
หากไม่ใช่กรณีใด ๆ ข้างต้น → ทับซ้อนกัน → คืน True
การติดตั้งใน Python
class Solution:
def isRectangleOverlap(self, R1, R2):
if (R1[0] >= R2[2]) or (R1[2] <= R2[0]) or \
(R1[3] <= R2[1]) or (R1[1] >= R2[3]):
return False
return True
ob = Solution()
print(ob.isRectangleOverlap([0,0,2,2], [1,1,3,3])) # True
อินพุต / เอาต์พุต
Input: [0,0,2,2], [1,1,3,3] Output: True