Build Post Office II
思路:
一开始的做法是最直接的: 从每一个emtpy开始BFS, 访问所有house, 记录下distance。然后再找到最小distance。很可惜超时了。
九章答案的做法是:以每一个house为起点做BFS, 记录下每一个empty到该house的距离。同时记录每一个empty点到所有house的距离。找出最小的距离就行了。
做完这道题感觉自己BFS基本过关了。
实现:
要合理利用coordinate类, 在找所有house和所有empty点操作其实是重复的,为何不单独开一个函数来处理?
一开始的做法是最直接的: 从每一个emtpy开始BFS, 访问所有house, 记录下distance。然后再找到最小distance。很可惜超时了。
九章答案的做法是:以每一个house为起点做BFS, 记录下每一个empty到该house的距离。同时记录每一个empty点到所有house的距离。找出最小的距离就行了。
做完这道题感觉自己BFS基本过关了。
实现:
要合理利用coordinate类, 在找所有house和所有empty点操作其实是重复的,为何不单独开一个函数来处理?
private List<Coordinate> getCoordinates(int type) {
List<Coordinate> coordinates = new ArrayList<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (grid[i][j] == type) {
coordinates.add(new Coordinate(i, j));
}
}
}
return coordinates;
}
评论
发表评论