📌  相关文章
📜  检查是否存在具有最大 X 和 Y 坐标的点(1)

📅  最后修改于: 2023-12-03 14:55:48.653000             🧑  作者: Mango

检查是否存在具有最大 X 和 Y 坐标的点

本题要求我们编写一个函数,检查给定的点集中是否存在具有最大 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)。

总结

本题考察了对遍历和比较的基本操作,是较为简单的算法题。