美文网首页
【leetcode】No.130:surrounded-regi

【leetcode】No.130:surrounded-regi

作者: I讨厌鬼I | 来源:发表于2019-07-20 16:03 被阅读0次

题目描述

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

思路:

比较笨的思路,使用一个boolean型的二维数组保存棋盘中的点是否应该保留O,从棋盘边缘的O开始深搜,只进入flag[x][y]=false以及board[x][y]=‘O’的点,深搜完之后遍历棋盘,把flag[x][y]=false对应的board[x][y]全部变为‘X’

代码:

public class Solution {

    private boolean[][] flag;

    private int[][] direction = {{-1,1,0,0},{0,0,-1,1}};

    public void solve(char[][] board) {
        if (board.length == 0 || board[0].length == 0) return;
        int width = board[0].length;
        int height = board.length;
        flag = new boolean[height][width];
        // 遍历棋盘边缘
        for (int row=0; row<height; row++){
            if (board[row][0] == 'O') findNeighbor(row, 0, board);
            if (board[row][width-1] == 'O') findNeighbor(row, width-1, board);
        }
        for (int col=0; col<width; col++){
            if (board[0][col] == 'O') findNeighbor(0, col, board);
            if (board[height-1][col] == 'O') findNeighbor(height-1, col, board);
        }
        // 修改最终棋盘
        for (int i=0; i<height; i++){
            for (int j=0; j<width; j++){
                if (flag[i][j] == false){
                    board[i][j] = 'X';
                }
            }
        }
    }
    // 深搜
    void findNeighbor(int x, int y, char[][] board){
        flag[x][y] = true;
        for (int j=0; j<direction[0].length; j++){
            int newX = x + direction[0][j];
            int newY = y + direction[1][j];
            if (newX>=0&&newX<board.length&&
                    newY>=0&&newY<board[0].length&&
                    board[newX][newY] == 'O'&&
                    !flag[newX][newY]){
                findNeighbor(newX, newY, board);
            }
        }
    }
}

相关文章

  • 【leetcode】No.130:surrounded-regi

    题目描述 Given a 2D board containing'X'and'O', capture all re...

  • 【No.130】新家整理

    疫情期间的搬家,总算快要接近尾声了。 周中就已经住到自己家,刚开始还能断舍离,后来累到脑子已经不转了,只想着,先搬...

  • NO.130话说多了吗?

    1 今天是2018年3月20日,北风,气温说是1-7℃。下午刚上班,德宝的妈妈从老家来学校啦,说是孩子昨天晚上在宿...

  • No.130《管人的真理》

    核心书摘 《管人的真理》是一本管理者的必备工具书。书中将大量的心理行为研究和管理实践相结合,不仅阐述了很多管理行为...

  • No.130 室内的女孩

    蓝色是忧虑,是孤单。

  • NO.130诗画:霜降

    秋至华叶黄, 霜降天更凉, 静坐长椅上, 独自赏斜阳。 —————————————————— 金花写诗+女儿小杨配...

  • NO.130《美丽澳门 》简单总结

  • 神奇的能量短文NO.130

    2020-03-24 星期二 晴 晨曦徐徐拉开了帷幕,又一个绚丽的早晨,带着清新降临人间。这个时段是我一天当中最...

  • No.130温柔的告别文案

    「告别的温柔文案」 ➊那天早上的雾散了,不止早上,不止雾 ❷人生海海祝你有帆有岸 ❸还是心念念废话少说回头见梦里见...

  • NO.130 每日复盘21.10.04

    身体锻炼 1.每日步数11000步。完成9900步。 2.晚间锻炼,平板支撑两组,共5分钟。 3.睡前冥想5分钟。...

网友评论

      本文标题:【leetcode】No.130:surrounded-regi

      本文链接:https://www.haomeiwen.com/subject/oalulctx.html