สมมติว่ามีสี่เหลี่ยมแทนด้วยรายการสี่ค่า [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] แล้ว คืนค่า False
- มิฉะนั้น คืนค่า True
ตัวอย่างโค้ด
class Solution:
def solve(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.solve([0,0,3,3], [1,1,4,4]))
อินพุต
[0,0,3,3],[1,1,4,4]
เอาต์พุต
True