📌  相关文章
📜  来自 N 个坐标的不同对之间的最大曼哈顿距离(1)

📅  最后修改于: 2023-12-03 15:40:21.056000             🧑  作者: Mango

来自 N 个坐标的不同对之间的最大曼哈顿距离

什么是曼哈顿距离?

曼哈顿距离,也称为城市街区距离,是指在一个矩形网格中从一个点可以走到另一个点的最短距离。曼哈顿距离的计算方式为:在二维平面上,两点间的曼哈顿距离等于两点在横坐标上的距离加上两点在纵坐标上的距离。

题目描述

给定N个坐标,求这N个坐标中两两之间曼哈顿距离的最大值。

解题思路

我们可以先遍历所有的坐标对,然后计算它们的曼哈顿距离,最后取得最大值即可。

以下为代码片段:

int maxManhattanDist(vector<pair<int, int>>& points) {
    int n = points.size();
    int maxDist = 0;
    for(int i = 0; i < n; i++) {
        for(int j = i + 1; j < n; j++) {
            int dist = abs(points[i].first - points[j].first) 
                     + abs(points[i].second - points[j].second);
            maxDist = max(maxDist, dist);
        }
    }
    return maxDist;
}

以上代码时间复杂度为$O(N^2)$,在点数较多时有可能会超时。如果我们想要更优秀的算法,可以使用类似于桶排序的方式来进行优化,具体可以看下面的参考资料。

参考资料