296. Best Meeting Point
Best Meeting Point
Solution
public class Solution {
public int minTotalDistance(int[][] grid) {
if (grid == null || grid.length == 0) return 0;
int row = grid.length;
int column = grid[0].length;
List<Node> houses = new ArrayList<>();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (grid[i][j] == 1) {
houses.add(new Node(i, j));
}
}
}
int minDistance = Integer.MAX_VALUE;
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
int currentDistance = 0;
Node currentNode = new Node(i,j);
for(Node node:houses) {
currentDistance += currentNode.distance(node);
}
minDistance = Math.min(minDistance, currentDistance);
}
}
return minDistance;
}
private class Node {
int x;
int y;
public Node(int x, int y) {
this.x = x;
this.y = y;
}
public int distance(Node other) {
return Math.abs(other.x - x) + Math.abs(other.y - y);
}
}
}Last updated