zoukankan      html  css  js  c++  java
  • LeetCode 130 被围绕的区域

    Leetcode 130 被围绕的区域

    给定一个二维字符数组,其中只包含两种字符:'O'、'X',要求将内部所有被'X'包围的'O'全部置为'X'。注意被包围是指'O'组成的区域周围都是'X',若区域周围存在至少一处边界(i==0 || j==0 || i==board.length-1 || j== board[0].length-1)则不算被包围。
    方法: 使用二维DFS/BFS,从边界开始将未被包围的'O'做上标记,之后将内部所有未被标记的、被包围的'O'置为'X',并将标记都恢复。

    执行用时:2 ms, 在所有 Java 提交中击败了98.14%的用户
    内存消耗:42.2 MB, 在所有 Java 提交中击败了13.55%的用户

    class Solution {
        public void solve(char[][] board) {
            if (board == null || board.length == 0) return;
            int m = board.length;
            int n = board[0].length;
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    // 从边缘o开始搜索
                    boolean isEdge = i == 0 || j == 0 || i == m - 1 || j == n - 1;
                    if (isEdge && board[i][j] == 'O') {
                        dfs(board, i, j);
                    }
                }
            }
    
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if (board[i][j] == 'O') {
                        board[i][j] = 'X';
                    }
                    if (board[i][j] == '#') {
                        board[i][j] = 'O';
                    }
                }
            }
        }
    
        public void dfs(char[][] board, int i, int j) {
            if (i < 0 || j < 0 || i >= board.length  || j >= board[0].length || board[i][j] == 'X' || board[i][j] == '#') {
                // board[i][j] == '#' 说明已经搜索过了. 
                return;
            }
            board[i][j] = '#';
            dfs(board, i - 1, j); // 上
            dfs(board, i + 1, j); // 下
            dfs(board, i, j - 1); // 左
            dfs(board, i, j + 1); // 右
        }
    }
    
  • 相关阅读:
    记录一次Jmeter性能测试
    【转】解疑性能测试之集合点
    WebService的发布及客户端的调用
    Jmeter性能测试之如何写Java请求测试用例类
    Vue nextTick用法
    Geolocation 地理定位
    Vue 生命周期及运用场景
    CSS3 动画基本使用
    Electron菜单
    Electron + vue 项目安装vue-devtools调试工具
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13474353.html
Copyright © 2011-2022 走看看