zoukankan      html  css  js  c++  java
  • leetcode 130. 被围绕的区域

    DFS不一定每次都要从里到外,也可能从外到里  找出边界O然后找到与他相连的标记成A,别的O就是被包围的O。

     1 class Solution {
     2 public:
     3     int n, m;
     4 
     5     void dfs(vector<vector<char>>& board, int x, int y) {
     6         if (x < 0 || x >= n || y < 0 || y >= m || board[x][y] != 'O') {
     7             return;
     8         }
     9         board[x][y] = 'A';
    10         dfs(board, x + 1, y);
    11         dfs(board, x - 1, y);
    12         dfs(board, x, y + 1);
    13         dfs(board, x, y - 1);
    14     }
    15 
    16     void solve(vector<vector<char>>& board) {
    17         n = board.size();
    18         if (n == 0) {
    19             return;
    20         }
    21         m = board[0].size();
    22         for (int i = 0; i < n; i++) {
    23             dfs(board, i, 0);
    24             dfs(board, i, m - 1);
    25         }
    26         for (int i = 1; i < m - 1; i++) {
    27             dfs(board, 0, i);
    28             dfs(board, n - 1, i);
    29         }
    30         for (int i = 0; i < n; i++) {
    31             for (int j = 0; j < m; j++) {
    32                 if (board[i][j] == 'A') {
    33                     board[i][j] = 'O';
    34                 } else if (board[i][j] == 'O') {
    35                     board[i][j] = 'X';
    36                 }
    37             }
    38         }
    39     }
    40 };
    View Code
    每天进步一点点~
  • 相关阅读:
    LintCode A+B问题
    LintCode 斐波纳契数列
    LintCode 删除链表中的元素
    LintCode 整数排序
    c++ lower_bound upper_bound
    259. 3Sum Smaller
    86. Partition List
    209. Minimum Size Subarray Sum
    11. Container With Most Water
    360. Sort Transformed Array
  • 原文地址:https://www.cnblogs.com/libin123/p/14615752.html
Copyright © 2011-2022 走看看