📅  最后修改于: 2023-12-03 14:55:48.653000             🧑  作者: Mango
本题要求我们编写一个函数,检查给定的点集中是否存在具有最大 X 坐标和最大 Y 坐标的点。
我们可以考虑遍历整个点集,依次记录最大的 X 坐标和 Y 坐标,最后再遍历一次点集,检查是否存在满足条件的点即可。
具体实现可以参考以下代码:
def has_max_point(points):
"""
检查点集中是否存在具有最大 X 坐标和最大 Y 坐标的点
:param points: 点集,格式为 [(x1, y1), (x2, y2), ...]
:return: 存在则返回 True,否则返回 False
"""
max_x, max_y = float('-inf'), float('-inf')
for x, y in points:
max_x = max(max_x, x)
max_y = max(max_y, y)
for x, y in points:
if x == max_x and y == max_y:
return True
return False
我们可以使用以下代码对函数进行测试:
points1 = [(1, 2), (3, 4), (5, 6)]
points2 = [(1, 2), (5, 4), (5, 6)]
assert has_max_point(points1) is False
assert has_max_point(points2) is True
函数中遍历点集的时间复杂度为 O(n),再遍历一次点集检查是否存在满足条件的点的时间复杂度也为 O(n),因此总时间复杂度为 O(n)。
函数中只用了常数个变量进行记录,因此空间复杂度为 O(1)。
本题考察了对遍历和比较的基本操作,是较为简单的算法题。