难度:Medium
解题思路:把矩阵想象成一个长方形,如果四周都是’X’,那么里面的都将包围。如果有未被包围的,一定从四周有’O’开始。
X X X X
X X X O
X X X X
X X X X
继续观察,如果与四周的’O’相交的’O’,那么它也将不会被包围。
X X X X
X X O O
X X X X
X X X X
继续观察,与上一个’O’相交的’O’,也不会被包围。
X X X X
X O O O
X X X X
X X X X
依次类推,可以得到解题思路:先从最外围的四周,找’O’。再从找到的’O’的上下左右,继续找’O’,直到找完为止。所有找到的’O’都不会被包围,可以直接对数组中相应位置赋予值,予以区分。寻找的过程就像病毒感染一样,所以加上了Infection的标签。实现的过程用queue。
代码如下。
1 | class Solution { |
运行结果:16ms,超过52.21%