思路完全一样

AC的代码:

  1. class Solution {
  2. private:
  3. struct Point {
  4. int x, y;
  5. Point(int _x, int _y):x(_x), y(_y) {}
  6. };
  7. public:
  8. void solve(vector<vector<char> > & board) {
  9. const int M = board.size();
  10. if (M <= ) return;
  11. const int N = board[].size();
  12. vector<Point> run; // 没被包含的O,判断后修改为D来标记
  13. for (int i=; i<M; ++i) // 1 边界
  14. for (int j=; j<N; ++j)
  15. if ((i== || i==M- || j== || j==N-) && board[i][j]=='O') {
  16. board[i][j] = 'D';
  17. run.push_back(Point(i, j));
  18. }
  19.  
  20. const static int PATH[][] = {{,},{,-},{-,},{,}};
  21. while (!run.empty()) { // 2 out -> insider
  22. Point p = run.back();
  23. run.pop_back();
  24. for (int i=; i<; ++i) {
  25. int x = p.x+PATH[i][];
  26. int y = p.y+PATH[i][];
  27. if (x< || x>=M || y< || y>= N || board[x][y]!='O')
  28. continue;
  29. board[x][y] = 'D';
  30. run.push_back(Point(x, y));
  31. }
  32. }
  33.  
  34. for (int i=; i<M; ++i) // 3 检查
  35. for (int j=; j<N; ++j) {
  36. if (board[i][j]=='X') continue;
  37. board[i][j] = (board[i][j]=='O'?'X':'O');
  38. }
  39. }
  40. };

时间通不过的代码:

  1. class Solution {
  2. public:
  3. void solve(vector<vector<char>> &board) {
  4. int size = board.size();
  5. if (size < )
  6. return;
  7.  
  8. for (int j = ; j < size; ++j) {
  9. if (board[][j] == 'O') {
  10. board[][j] == '';
  11. judgeRegion(board, , j);
  12. }
  13.  
  14. if (board[size-][j] == 'O') {
  15. board[size-][j] == '';
  16. judgeRegion(board, size-, j);
  17. }
  18. }
  19.  
  20. for (int i = ; i < size - ; ++i) {
  21. if (board[i][] == 'O') {
  22. board[i][] == '';
  23. judgeRegion(board, i, );
  24. }
  25.  
  26. if (board[i][size-] == 'O') {
  27. board[i][size-] == '';
  28. judgeRegion(board, i, size - );
  29. }
  30. }
  31.  
  32. for (int i = ; i < size; ++i) {
  33. for (int j = ; j < size; ++j) {
  34. if (board[i][j] == 'O')
  35. board[i][j] = 'X';
  36. if (board[i][j] == '')
  37. board[i][j] == 'O';
  38. }
  39. }
  40. }
  41.  
  42. void judgeRegion(vector<vector<char>> &board, int i, int j) {
  43. int size = board.size();
  44. if (i >= && j < size && board[i][j] == 'O') {
  45. board[i][j] == '';
  46. judgeRegion(board, i-, j);
  47. judgeRegion(board, i+, j);
  48. judgeRegion(board, i, j-);
  49. judgeRegion(board, i, j+);
  50. }
  51. }
  52.  
  53. };

Surrounded Regions [未完成]的更多相关文章

  1. [LeetCode] Surrounded Regions 包围区域

    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...

  2. 验证LeetCode Surrounded Regions 包围区域的DFS方法

    在LeetCode中的Surrounded Regions 包围区域这道题中,我们发现用DFS方法中的最后一个条件必须是j > 1,如下面的红色字体所示,如果写成j > 0的话无法通过OJ ...

  3. 【leetcode】Surrounded Regions

    Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...

  4. [LintCode] Surrounded Regions 包围区域

    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...

  5. 22. Surrounded Regions

    Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...

  6. Surrounded Regions

    Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...

  7. [Swift]LeetCode130. 被围绕的区域 | Surrounded Regions

    Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...

  8. 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 用了第一种方式, ...

  9. 130. Surrounded Regions(M)

    130.Add to List 130. Surrounded Regions Given a 2D board containing 'X' and 'O' (the letter O), capt ...

随机推荐

  1. unity 渲染第一步

    unity 不是将宇宙投影到水晶球里,而是:将整个 view frustum 投影成 一个 cube .------ <unity 渲染箴言> 观察一下,整个 view frustum 以 ...

  2. voip通话分析(含语音质量)

    SipAnalysis.exe使用python开发,通过抓取网卡通信包进行质量分析:1) 分析VOIP通话的发起方.挂机方及对应时间点2) 分析通话使用的媒体信息(方向.载荷.切换时间)3) 分析通话 ...

  3. Full Text Search 实现Sort的实现方案

    CREATE TABLE dbo.pageStore( ID int NOT NULL, StoreName varchar(50) NULL, OwnerOccupation varchar(50) ...

  4. datepicker97切换年月日再连续点击下拉中日期的bug出现问题

    解决办法: function wdateOption(fmt){ if(fmt===undefined){fmt="yyyy-MM-dd"} return{ dateFmt:fmt ...

  5. 【C语言】-指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...

  6. 游戏反编译工具dnSpy

    dnSpy使用的工具下载地址为: https://github.com/cnxy/dnSpy/archive/v4.0.0.zip 或 dnSpy官方下载地址: https://github.com/ ...

  7. shiro的授权

    1.授权的流程 2.三种授权方式 1.编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject. ...

  8. pyhon-爬虫实战抓取豆瓣top250到mysql

    采集地址https://movie.douban.com/top250 一.创建mysql数据库 CREATE TABLE `t_doubantop` ( `id` int(11) unsigned ...

  9. PHP学习9——MySQL数据库

    主要内容: MySQL的启动 MySQL数据库操作 数据库表设计 创建和查看表 修改表结构 MySQL语句操作 数据库备份与恢复 PHP操作MySQL数据库 面向对象的数据库操作 MySQL数据库是目 ...

  10. sb追加网页(在追加中添加C#代码)

     “+代码+”