Build Post Office II

思路:
一开始的做法是最直接的: 从每一个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;  
   }  

评论

此博客中的热门博文

776. Split BST

663. Equal Tree Partition

532. K-diff Pairs in an Array