博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode][JAVA] Surrounded Regions
阅读量:4576 次
发布时间:2019-06-08

本文共 1393 字,大约阅读时间需要 4 分钟。

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 XX O O XX X O XX O X X

 

After running your function, the board should be:

X X X XX X X XX X X XX O X X 基本思路是:如果把所有不该变为X的O标注出来,那么剩下的O就是要变为X的了。 所以,从矩阵各个边上的O开始进行图的遍历,入栈/队列时把相应节点值从‘O'变成其他符号(我用的是'+'),出栈/队列时对节点四方的相邻值为'O'的节点进行讨论。 全部遍历完后,把'O'变为'X', '+'变为'O'。 代码:
1 public class Pair { 2         int x; 3         int y; 4         Pair(int x, int y) { 5             this.x = x; 6             this.y = y; 7         } 8     } 9     public void solve(char[][] board) {10         int m=board.length;11         if(m<=2)12             return;13         int n=board[0].length;14         for(int i=0;i
st = new Stack
();37 bd[i][j] = '+';38 st.push(new Pair(i,j));39 40 while(!st.isEmpty()) {41 Pair temp = st.pop();42 if(temp.x>0 && bd[temp.x-1][temp.y]=='O') {43 bd[temp.x-1][temp.y]='+';44 st.push(new Pair(temp.x-1, temp.y));45 }46 if(temp.y
0 && bd[temp.x][temp.y-1]=='O') {55 bd[temp.x][temp.y-1]='+';56 st.push(new Pair(temp.x, temp.y-1));57 }58 }59 }

 

转载于:https://www.cnblogs.com/splash/p/4053363.html

你可能感兴趣的文章
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
存储过程
查看>>
生成器
查看>>
将一个数的每一位都取出来的方法!
查看>>
2) 十分钟学会android--建立第一个APP,执行Android程序
查看>>
面试题8:二叉树下的一个节点
查看>>
hash冲突的解决方法
查看>>
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>
doc文档生成带目录的pdf文件方法
查看>>
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>
通过前端上传图片等文件的方法
查看>>
在 OC 中调用 Swift 代码
查看>>
Android仿腾讯应用宝 应用市场,下载界面, 有了进展button
查看>>
安卓|五大逆向软件下载
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>