day60(1.19)——leetcode面试经典150

130. 被围绕的区域

130. 被包围的区域

回家之后真的会变变得很懒惰啊啊啊

这道题就是先找到靠近边缘的O,并全部标记成T,最后通过遍历将所有O设置成X,所有的T恢复成O

题目:

题解:

java 复制代码
class Solution {
    int l;
    int r;
    public void solve(char[][] board) {
        if(board.length == 0) {
            return ;
        }
        l = board.length;
        r = board[0].length;
        int i = 0;
        int j = 0;
        for(j=0;j<r;j++) {
            if(board[0][j] == 'O') {
                dfs(board,0,j);
            }
            if(board[l-1][j] == 'O') {
                dfs(board,l-1,j);
            }
        }
        for(i=0;i<l;i++) {
            if(board[i][0] == 'O') {
                dfs(board,i,0);
            }
            if(board[i][r-1] == 'O') {
                dfs(board,i,r-1);
            }
        }
        for(i=0;i<l;i++) {
            for(j=0;j<r;j++) {
                if(board[i][j] == 'O') {
                    board[i][j] = 'X';
                }
                else if(board[i][j] == 'T') {
                    board[i][j] = 'O';
                }
            }
        }
    }

    void dfs(char[][] board, int x, int y) {
        if(x < 0 || x >= l || y < 0 || y >= r || board[x][y] != 'O') {
            return ;
        }
        board[x][y] = 'T';
        dfs(board,x,y+1);
        dfs(board,x+1,y);
        dfs(board,x-1,y);
        dfs(board,x,y-1);
    }
}
相关推荐
@猿程序17 小时前
ShardingSphere自定义分片算法与Redis动态规则加载实战
网络·redis·算法
Share_Shun17 小时前
【定位引导】多点对位算法
算法
炽烈小老头17 小时前
【 每天学习一点算法 2026/03/18】全排列
学习·算法
Book思议-17 小时前
【数据结构实战】判断链表是否有环:快慢指针法(Floyd 判圈算法)
c语言·数据结构·算法·链表
liuyao_xianhui17 小时前
优选算法_位运算_只出现一次的数字3_C++
开发语言·数据结构·c++·算法·leetcode·链表·动态规划
uzong17 小时前
为什么是你来做?面试中犀利问题的底层逻辑是什么和标准回答模版
后端·面试
lihao lihao17 小时前
滑动窗口
数据结构·算法
Sailing17 小时前
🚀AI 写代码越来越快,但我开始不敢上线了
前端·后端·面试
咕叽吧咔17 小时前
LeetBook乐扣题库 142. 环形链表 II
java·数据结构·leetcode·链表
Jordannnnnnnn17 小时前
复试打卡day30
算法