Giả sử có một hình chữ nhật được biểu diễn dưới dạng danh sách [x1, y1, x2, y2], trong đó (x1, y1) là tọa độ góc dưới bên trái, và (x2, y2) là tọa độ góc trên bên phải. Hai hình chữ nhật chồng chéo nhau nếu diện tích giao của chúng là dương. Do đó, hai hình chữ nhật chỉ chạm nhau ở góc hoặc cạnh không coi là chồng chéo.
Nếu ta có hai hình chữ nhật (song song với trục tọa độ), ta cần kiểm tra xem chúng có chồng chéo nhau hay không.
Ví dụ, nếu đầu vào là R1 = [0,0,2,2], R2 = [1,1,3,3], thì đầu ra sẽ là True.
Để giải quyết, ta thực hiện các bước sau:
- Nếu R1[0] >= R2[2] hoặc R1[2] <= R2[0] hoặc R1[3] <= R2[1] hoặc R1[1] >= R2[3], thì:
- Trả về False
- Ngược lại:
- Trả về True
Hãy xem triển khai sau để hiểu rõ hơn:
Ví dụ
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]))
Đầu vào
[0,0,2,2],[1,1,3,3]
Đầu ra
True