面试时遇到以下问题:
有两个矩形。每个人都知道左上角和右下角的坐标。我们需要编写一个函数来回答这些矩形是否相交的问题。
我用数组解决了这个问题,面试很久以前就结束了,但我怀疑解决方案不够好:
def gen_rectangle(cords):
"""Генерирует массив координат всех занимаемых прямоугольником точек"""
rectangle = []
for i in range(cords[0][0], cords[1][0]):
for j in range(cords[0][1], cords[1][1]):
rectangle.append((i, j))
return rectangle
def intersection(cord1, cord2):
"""Есть ли пересечение"""
rectangle1 = gen_rectangle(cord1)
rectangle2 = gen_rectangle(cord2)
for i in rectangle1:
for j in rectangle2:
if i == j:
return 'We have intersection!'
return 'All good'
cord1 = ((1, 1), (4, 8)) # первый прямоугольник
cord2 = ((3, 3), (16, 20)) # второй прямоугольник
print(intersection(cord1, cord2))
例如:如果矩形非常大,那么一个矩形占用的每个点就是两个int,这样的解决方案不会最优地消耗内存。如何改进我的解决方案?
您可以根据条件用严格的不等式替换非严格的不等式。