Surrounded Regions [未完成]
思路完全一样
AC的代码:
- class Solution {
- private:
- struct Point {
- int x, y;
- Point(int _x, int _y):x(_x), y(_y) {}
- };
- public:
- void solve(vector<vector<char> > & board) {
- const int M = board.size();
- if (M <= ) return;
- const int N = board[].size();
- vector<Point> run; // 没被包含的O,判断后修改为D来标记
- for (int i=; i<M; ++i) // 1 边界
- for (int j=; j<N; ++j)
- if ((i== || i==M- || j== || j==N-) && board[i][j]=='O') {
- board[i][j] = 'D';
- run.push_back(Point(i, j));
- }
- const static int PATH[][] = {{,},{,-},{-,},{,}};
- while (!run.empty()) { // 2 out -> insider
- Point p = run.back();
- run.pop_back();
- for (int i=; i<; ++i) {
- int x = p.x+PATH[i][];
- int y = p.y+PATH[i][];
- if (x< || x>=M || y< || y>= N || board[x][y]!='O')
- continue;
- board[x][y] = 'D';
- run.push_back(Point(x, y));
- }
- }
- for (int i=; i<M; ++i) // 3 检查
- for (int j=; j<N; ++j) {
- if (board[i][j]=='X') continue;
- board[i][j] = (board[i][j]=='O'?'X':'O');
- }
- }
- };
时间通不过的代码:
- class Solution {
- public:
- void solve(vector<vector<char>> &board) {
- int size = board.size();
- if (size < )
- return;
- for (int j = ; j < size; ++j) {
- if (board[][j] == 'O') {
- board[][j] == '';
- judgeRegion(board, , j);
- }
- if (board[size-][j] == 'O') {
- board[size-][j] == '';
- judgeRegion(board, size-, j);
- }
- }
- for (int i = ; i < size - ; ++i) {
- if (board[i][] == 'O') {
- board[i][] == '';
- judgeRegion(board, i, );
- }
- if (board[i][size-] == 'O') {
- board[i][size-] == '';
- judgeRegion(board, i, size - );
- }
- }
- for (int i = ; i < size; ++i) {
- for (int j = ; j < size; ++j) {
- if (board[i][j] == 'O')
- board[i][j] = 'X';
- if (board[i][j] == '')
- board[i][j] == 'O';
- }
- }
- }
- void judgeRegion(vector<vector<char>> &board, int i, int j) {
- int size = board.size();
- if (i >= && j < size && board[i][j] == 'O') {
- board[i][j] == '';
- judgeRegion(board, i-, j);
- judgeRegion(board, i+, j);
- judgeRegion(board, i, j-);
- judgeRegion(board, i, j+);
- }
- }
- };
Surrounded Regions [未完成]的更多相关文章
- [LeetCode] Surrounded Regions 包围区域
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- 验证LeetCode Surrounded Regions 包围区域的DFS方法
在LeetCode中的Surrounded Regions 包围区域这道题中,我们发现用DFS方法中的最后一个条件必须是j > 1,如下面的红色字体所示,如果写成j > 0的话无法通过OJ ...
- 【leetcode】Surrounded Regions
Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...
- [LintCode] Surrounded Regions 包围区域
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- 22. Surrounded Regions
Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...
- Surrounded Regions
Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...
- [Swift]LeetCode130. 被围绕的区域 | Surrounded Regions
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions
两种方式处理已经访问过的节点:一种是用visited存储已经访问过的1:另一种是通过改变原始数值的值,比如将1改成-1,这样小于等于0的都会停止. Number of Islands 用了第一种方式, ...
- 130. Surrounded Regions(M)
130.Add to List 130. Surrounded Regions Given a 2D board containing 'X' and 'O' (the letter O), capt ...
随机推荐
- unity 渲染第一步
unity 不是将宇宙投影到水晶球里,而是:将整个 view frustum 投影成 一个 cube .------ <unity 渲染箴言> 观察一下,整个 view frustum 以 ...
- voip通话分析(含语音质量)
SipAnalysis.exe使用python开发,通过抓取网卡通信包进行质量分析:1) 分析VOIP通话的发起方.挂机方及对应时间点2) 分析通话使用的媒体信息(方向.载荷.切换时间)3) 分析通话 ...
- Full Text Search 实现Sort的实现方案
CREATE TABLE dbo.pageStore( ID int NOT NULL, StoreName varchar(50) NULL, OwnerOccupation varchar(50) ...
- datepicker97切换年月日再连续点击下拉中日期的bug出现问题
解决办法: function wdateOption(fmt){ if(fmt===undefined){fmt="yyyy-MM-dd"} return{ dateFmt:fmt ...
- 【C语言】-指向一维数组元素的指针
本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...
- 游戏反编译工具dnSpy
dnSpy使用的工具下载地址为: https://github.com/cnxy/dnSpy/archive/v4.0.0.zip 或 dnSpy官方下载地址: https://github.com/ ...
- shiro的授权
1.授权的流程 2.三种授权方式 1.编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject. ...
- pyhon-爬虫实战抓取豆瓣top250到mysql
采集地址https://movie.douban.com/top250 一.创建mysql数据库 CREATE TABLE `t_doubantop` ( `id` int(11) unsigned ...
- PHP学习9——MySQL数据库
主要内容: MySQL的启动 MySQL数据库操作 数据库表设计 创建和查看表 修改表结构 MySQL语句操作 数据库备份与恢复 PHP操作MySQL数据库 面向对象的数据库操作 MySQL数据库是目 ...
- sb追加网页(在追加中添加C#代码)
“+代码+”