- 浏览: 184093 次
- 性别:
- 来自: 济南
文章分类
最新评论
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
给定一个二维数组,数组由两个元素‘O'和’X'组成,找到所有被X包围的O, 将O变为X。我们可以从数组的四个边开始,如果遇到‘O'就从当前点就行深搜,并且将所有连通的O进行标记,这些点都不是被X包围的。我们遍历完四个边上的点之后,剩下的没有被标记的O都是被X包围的,它们需要变为X。接下来我们仅需要遍历一遍数组,标记过的O保持不变,没标记过的变为X。在深搜的时候,如果数组中有很多O,这是可能会产生堆栈溢出,我们可以先判断再压栈,将深搜进行优化,防止溢出。代码如下:
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
给定一个二维数组,数组由两个元素‘O'和’X'组成,找到所有被X包围的O, 将O变为X。我们可以从数组的四个边开始,如果遇到‘O'就从当前点就行深搜,并且将所有连通的O进行标记,这些点都不是被X包围的。我们遍历完四个边上的点之后,剩下的没有被标记的O都是被X包围的,它们需要变为X。接下来我们仅需要遍历一遍数组,标记过的O保持不变,没标记过的变为X。在深搜的时候,如果数组中有很多O,这是可能会产生堆栈溢出,我们可以先判断再压栈,将深搜进行优化,防止溢出。代码如下:
public 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++) { if(board[i][0] == 'O') getZero(i, 0, board); } for(int i = 0; i < n; i++) { if(board[0][i] == 'O') getZero(0, i, board); } for(int i = 1; i < n; i++) { if(board[m - 1][i] == 'O') getZero(m - 1, i, board); } for(int i = 1; i < m; i++) { if(board[i][n - 1] == 'O') getZero(i, n - 1, board); } for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(board[i][j] == 'Y') { board[i][j] = 'O'; } else { board[i][j] = 'X'; } } } } public void getZero(int i, int j, char[][] board) { board[i][j] = 'Y'; if(i - 1 > 0 && board[i - 1][j] == 'O') getZero(i - 1, j, board); if(i + 1 < board.length && board[i + 1][j] == 'O') getZero(i + 1, j, board); if(j - 1 > 0 && board[i][j - 1] == 'O') getZero(i, j - 1, board); if(j + 1 < board[0].length && board[i][j + 1] == 'O') getZero(i, j + 1, board); return; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 266Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 268You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 387Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 376Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 501Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 566Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 476Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 665Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 470The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 431Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 577Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 583Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 427All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 899Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 931Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 603Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 682Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 849Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 784You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 712For a undirected graph with tre ...
相关推荐
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-...