zoukankan      html  css  js  c++  java
  • 286. Walls and Gates

        /*
         * 286. Walls and Gates
         * 2016-7-1 by Mingyang
         * 好吧,这道题目我们不需要想太多,就算题目标的是BFS,可是个人还是习惯做dfs
         * 基本的dfs不需要判断重复因为可以revisite
         */
         public void wallsAndGates(int[][] rooms) {
                for (int i = 0; i < rooms.length; i++)
                    for (int j = 0; j < rooms[0].length; j++)
                        if (rooms[i][j] == 0) 
                            dfs(rooms, i, j, 0);
                }
               private void dfs(int[][] rooms, int i, int j, int d) {
                  if (i < 0 || i >= rooms.length || j < 0 || j >= rooms[0].length || rooms[i][j] < d) 
                      return;
                   rooms[i][j] = d;
       //这个地方写的妙,初学者会想d到底是不是最小的呢,其实在每个门向周围的时候辐射已经考虑到这个先后问题了
                   dfs(rooms, i - 1, j, d + 1);
                   dfs(rooms, i + 1, j, d + 1);
                   dfs(rooms, i, j - 1, d + 1);
                   dfs(rooms, i, j + 1, d + 1);
              }
  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5634777.html
Copyright © 2011-2022 走看看