博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 130. Surrounded Regions(被围绕的区域)
阅读量:4090 次
发布时间:2019-05-25

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

 

一、问题描述

给定一个元素均为'O'和'X'的二维数组,将内部的'O'重置为'X',边界上的'O'保持不变。

 

测试用例:

Input:X X X XX O O XX X O XX O X XOutput:X X X XX X X XX X X XX O X X

 

二、代码实现

首先,遍历四条边界,如果当前元素是'X',直接continue;如果当前元素是'O',则将其置为'A'(标记),并且将与它相邻的所有'O'也置为'A'。

然后,两层循环遍历数组,将'O'置为'X',将'A'恢复为'O'。

class Solution {    public void solve(char[][] board) {        if (board == null || board.length <= 2) {            return;        }        //记住左右边界的'O'        for (int i=0; i
= board.length || j < 0 || j >= board[0].length || board[i][j] == 'X') { return; } board[i][j] = 'A'; if (i-1 >= 0 && board[i-1][j] == 'O') { //上 这里的边界判断其实可以去掉 dfs(board, i-1, j); } if (i+1 < board.length && board[i+1][j] == 'O') { //下 dfs(board, i+1, j); } if (j-1 >= 0 && board[i][j-1] == 'O') { //左 dfs(board, i, j-1); } if (j+1 < board[0].length && board[i][j+1] == 'O') { //右 dfs(board, i, j+1); } }}

 

转载地址:http://xfnii.baihongyu.com/

你可能感兴趣的文章
【JAVA数据结构】先进先出队列
查看>>
移植Vim配色方案到Eclipse
查看>>
谈谈加密和混淆吧[转]
查看>>
关于按钮的mouseOver和rollOver
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
JVM内存模型_Minor GC笔记
查看>>
SpringCloud学习之PassCloud——(一)PassCloud源代码下载
查看>>
Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
查看>>
缓存篇-Redis缓存失效以及解决方案
查看>>
phpquery抓取网站内容简单介绍
查看>>
找工作准备的方向(4月22日写的)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
原来k8s docker是用go语言写的,和现在所讲的go是一个东西!
查看>>