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
public class Solution { public void solve(char[][] board) { if (board == null || board.length <= 1 || board[0].length <= 1) { return; } for (int i = 0; i < board[0].length; i++) { fill(board, 0, i); fill(board, board.length - 1, i); } for (int i = 0; i < board.length; i++) { fill(board, i, 0); fill(board, i, board[0].length - 1); } for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[0].length; j++) { if (board[i][j] == 'O') board[i][j] = 'X'; else if (board[i][j] == '#') board[i][j] = 'O'; } } } private void fill(char[][] board, int i, int j) { if (board[i][j]!='O') { return; } board[i][j] = '#'; Queue<Integer> queue = new LinkedList<Integer>(); int code = i*board[0].length+j; queue.add(code); while (!queue.isEmpty()) { code = queue.poll(); int row = code/board[0].length; int col = code%board[0].length; if (row >= 1 && board[row - 1][col] == 'O') { queue.add((row - 1) * board[0].length + col); board[row - 1][col] = '#'; } if (row <= board.length - 2 && board[row + 1][col] == 'O') { queue.add((row + 1) * board[0].length + col); board[row + 1][col] = '#'; } if (col >= 1 && board[row][col - 1] == 'O') { queue.add(row * board[0].length + col - 1); board[row][col - 1] = '#'; } if (col <= board[0].length - 2 && board[row][col + 1] == 'O') { queue.add(row * board[0].length + col + 1); board[row][col + 1] = '#'; } } } }
相关推荐
python python_leetcode题解之130_Surrounded_Regions
在本题解中,我们将深入探讨LeetCode面试中的一道经典题目——第130题“被包围的区域”(Surrounded Regions)。这是一道涉及Python编程语言的算法问题,通常在求职面试中用于测试候选人的逻辑思维和编程能力。在...
3. **Surrounded Regions.cpp** - 第49题,解冑处理的是矩阵中的被包围的区域。通常需要使用深度优先搜索或广度优先搜索策略,通过连通组件的概念来解决这类问题。 4. **N-Queens.cpp** - 这是经典的第51题“N皇后...
leetcode做过的LeetCode的题目记录一下。对一些比较经典的题型进行分类总结。数据结构 数组 字符串 队列 链表 双指针 栈 堆 树 二叉搜索... Surrounded Regions【2020-01-09】114. Flatten Binary Tree to Linked List
在Ruby中,对象是程序的基本构建块,而"Surrounded"库提供了一种方式来更有效地管理和封装这些对象,以及它们之间的交互。这个库的核心理念是帮助开发者更加集中地处理对象的生命周期和行为,从而提高代码的可读性...
标题中的“EasyXML.rar_delphi XML_easy_menj6u_surrounded5cg_xml”表明这是一个与Delphi编程语言相关的XML处理库,名为EasyXML,版本可能是4,且可能由用户"menj6u"或"surrounded5cg"涉及或讨论。描述中提到的...
【Python-100-Days-master_by9jz_surrounded83s_catvk4_python_python教程】是一个Python学习资源,由by9jz、surrounded83s和catvk4等作者共同创建,旨在帮助初学者通过每天一小时的学习,用100天的时间系统地掌握...
rsa加密解密算法的JAVA代码实现,可以参考,
包围Surrounded 类允许开发人员从较长的字符串中提取部分文本。 提取的部分基于特定字符周围的单词数。 输出类似于 Google 返回的结果:以特定单词为中心的文本片段。 这个类有一个公共方法: public static String ...
Nonlinear total variation based noise removal algorithms 非线性TV去噪的程序
自动检测遥感影像上的阴影区域,并将阴影区域去掉。
将您的问题名称用作类,并使用Surrounded::Context对其进行扩展它可能看起来像这样: class Employment extend Surrounded :: Context role :boss role :employeeend 在您的应用程序中,您将使用对象初始化此类以...
气压传感器FBM320基于C语言的参考代码
《GD32F130C8T6移植FreeRTOS详解》 在嵌入式系统设计中,实时操作系统(RTOS)扮演着至关重要的角色,它为开发者提供了多任务调度、资源管理以及时间管理等核心功能。本文将深入探讨如何在GD32F130C8T6微控制器上...
在分析多极导波在流体填充的钻孔中传播的问题时,本文采用的摄动方法是一种非常有力的理论工具,其核心思想是对一个相对容易处理的参考系统(本文中是各向同性状态的立方晶体介质)引入扰动来近似处理一个更复杂的...
标题中的"springboot-03-elastic.rar_elastic_halfwayema_springboot_surround"表明这是一个关于Spring Boot和Elasticsearch的项目,其中可能包含了"halfwayema"和"surrounded6s3"这两个特定的概念或组件。...
concise](https://leetcode.com/problems/surrounded-regions/discuss/453448/java-concise-bfs) 137这种 deep copy, HashMap通吃不要太爽 Day 3 - Dec 17 12:28 199 Finished. 佛了 做完第一题就不想做了 12:54...
Surrounded_Regions 由四周‘O’开始向内检索,利用第三个字符对可以变换的‘O’进行暂存 Word_Lader BFS,避免DFS记录以遍历的节点错误,且保证优先找到最短的路径, 按照图的方法判断任意两个节点是否差一个字母,...
7. leetcode-130-Surrounded-Regions.md:第130题,包围的区域,可能涉及二维数组处理和深度优先搜索(DFS)。 8. leetcode-29-Divide-Two-Integers.md:第29题,两数相除,涉及到整数除法和位运算。 9. leetcode-...