Best Meet Point

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|.

Example

Input:

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


Output: 6 

Explanation: 
Given three people living at 
(0,0), (0,4), and (2,2):

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

Note

和到各个建筑最短距离不同,不需要暴力去遍历。这里任何点都可以是目标点,也不会有到达不了的情况

1D的话就是中位数作为目标点,2D就分别收集row和col,这样都会是排序的,取中位数,算两次距离,相加就是答案

Complexity analysis

  • Time complexity: O(mn)

  • Space complexity: O(mn)

Code

更elegant的写法

Last updated