สมมติว่ามีสี่เหลี่ยมผืนผ้าที่แสดงเป็นรายการ [x1, y1, x2, y2] โดยที่ (x1, y1) คือพิกัดของมุมล่างซ้าย และ (x2, y2) คือพิกัดของ มุมขวา. ตอนนี้สี่เหลี่ยมสองรูปทับซ้อนกันถ้าพื้นที่ของจุดตัดเป็นบวก ดังนั้น เราจึงเข้าใจได้ว่าสี่เหลี่ยมผืนผ้าสองรูปที่แตะเฉพาะที่มุมหรือขอบจะไม่ทับซ้อนกัน
หากเรามีสี่เหลี่ยม (จัดแนวแกน) สองอัน เราต้องตรวจสอบว่าเหลื่อมกันหรือไม่
ดังนั้น หากอินพุตเป็น R1 =[0,0,2,2], R2 =[1,1,3,3] ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า R1[0]>=R2[2] หรือ R1[2]<=R2[0] หรือ R1[3]<=R2[1] หรือ R1[1]>=R2[3] แล้ว
- คืนค่าเท็จ
- มิฉะนั้น
- คืนค่า True
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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 else: return True ob = Solution() print(ob.isRectangleOverlap([0,0,2,2],[1,1,3,3]))
อินพุต
[0,0,2,2],[1,1,3,3]
ผลลัพธ์
True