思路:DFS、BFS
首先先看题目,给定的二维矩阵中,包含 ‘X’ 和 ‘O’(字母 O)。再看解释部分,任何边界上的 ‘O’ 不会被填充为 ‘X’,那么现在也就是说,其实有三个部分:
- 可形成包围的 ‘X’;
- 被 ‘X’ 包围的 ‘O’;
- 未被 ‘X’ 包围的 ‘O’。
现在题目的要求是将被包围的 ‘O’,转变为 ‘X’。前面也说了,未被包围的 ‘O’,是处于边界上的,同时侧面说明与边界 ‘O’ 相连的 ‘O’ 又不会被 ‘X’ 填充。
那么我们可以根据这个性质,我们考虑从边界开始扩散,先去标记不能被填充的 ‘O’,也就是与边界 ‘O’ 相连的部分,那么剩下的 ‘O’ 则会被包围转变为 ‘X’。具体的做法如下:
- 以边界的 ‘O’ 为起点,标记与之相连或者间接相连的字母 ‘O’;
- 当标记完上面部分的 ‘O’