zoukankan      html  css  js  c++  java
  • LeetCode OJ

    题目:

    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.

    A region is captured by flipping all 'O's into 'X's in that surrounded region.

    For example,

    X X X X
    X O O X
    X X O X
    X O X X
    

    After running your function, the board should be:

    X X X X
    X X X X
    X X X X
    X O X X

    解题思路:

      参照网上的解题思路:先从四周的‘O'进行搜索,将能到达的'O'换成第三种符号,如('#'), 再遍历所有符号把O换成X,第三种符号换回O。

    代码:

    class Solution {
    public:  
        int m, n;
        
        void traversal(int x, int y, vector<vector<char>> &board) {
            if (x >= 0 && x < m && y >= 0 && y < n && board[x][y] == 'O') {
                board[x][y] = 'Z';
                traversal(x - 1, y, board);
                traversal(x + 1, y, board);
                traversal(x, y - 1, board);
                traversal(x, y + 1, board);
            }    
        }
        
        void solve(vector<vector<char>> &board) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if (board.empty() || board.size() == 0 || board[0].size() == 0) {
                return;
            }
            m = board.size(), n = board[0].size();
            for (int i = 0; i < n; i++) {
                traversal(0, i, board);
                traversal(m - 1, i, board);
            }
            for (int i = 0; i < m; i++) {
                traversal(i, 0, board);
                traversal(i, n - 1, board);
            }
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    board[i][j] = board[i][j] == 'Z' ? 'O' : 'X';
                }
            }
        }
    };
  • 相关阅读:
    MySQL学习(十二)
    MySQL学习(十一)
    MySQL学习(十)
    MySQL学习(九)
    MySQL学习(八)
    hlg1600线性代数中的矩阵问题【区间dp】
    HDU1556Color the ball【标号法||树状数组】
    hlg1481 Attack of the Giant n-pus【二分+二分图】
    0918
    20140913
  • 原文地址:https://www.cnblogs.com/dongguangqing/p/3727285.html
Copyright © 2011-2022 走看看