Cho hai hình chữ nhật được biểu diễn bằng danh sách bốn phần tử [x1, y1, x2, y2], trong đó (x1, y1) là góc dưới bên trái, (x2, y2) là góc trên bên phải. Hai hình chữ nhật giao nhau khi diện tích giao nhau dương (chạm cạnh hoặc góc không tính).
Ví dụ
Đầu vào: R1 = [0,0,2,2], R2 = [1,1,3,3].
Đầu ra: True.
Thuật toán
Hai hình chữ nhật không giao nhau nếu một trong các điều kiện sau đúng:
R1[0] >= R2[2](R1 ở bên phải R2)R1[2] <= R2[0](R1 ở bên trái R2)R1[3] <= R2[1](R1 ở bên dưới R2)R1[1] >= R2[3](R1 ở bên trên R2)
Nếu không có điều kiện nào đúng, trả về True.
Mã nguồn Python
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]))
Đầu vào / Đầu ra
Input: [0,0,3,3], [1,1,4,4]
Output: True