Leetcode 296 Best Meeting Point

本文探讨了如何在二维网格中找到使所有人在Manhattan距离下总旅行距离最短的会面点。通过将二维问题转化为两个一维问题解决,利用中位数特性找到最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Best Meeting Point

Total Accepted: 701  Total Submissions: 1714  Difficulty: Medium

A group of two or more people wants to meet and minimize the total travel distance. You are given a 2D grid of values 0 or 1, where each 1 marks the home of someone in the group. The distance is calculated usingManhattan Distance, where distance(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y|.

For example, given three people living at (0,0)(0,4), and(2,2):

1 - 0 - 0 - 0 - 1
|   |   |   |   |
0 - 0 - 0 - 0 - 0
|   |   |   |   |
0 - 0 - 1 - 0 - 0

The point (0,2) is an ideal meeting point, as the total travel distance of 2+2+2=6 is minimal. So return 6.

[思路]

二维的等于一维的相加, 一维的最小点必在median点(用反证法可以证明).


在二维数组中找到中位数,如果是奇数的数字就取中位数


这个题很巧妙的就是二维数组的距离可以转化为2个一维数组的距离求解


http://blog.csdn.net/xudli/article/details/49420623

这里是比较好的讨论