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); // 右
        }
    }
    
  • 相关阅读:
    Win7+Ubuntu11.10(EasyBCD硬盘安装)
    ubuntu 定时执行php
    Javascript如何判断一个变量是普通变量还是数组还是对象?
    CSS3 Gradient
    CSS3 transform rotate(旋转)锯齿的解决办法
    win2003中Apache开启gzip功能
    CSS3图形,Css画图,Css3三角形
    apache开启gzip的压缩功能
    标签:article
    人人FED CSS编码规范
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13474353.html
Copyright © 2011-2022 走看看