• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594

            [LeetCode]Surrounded Regions-2014.01.17

            Posted on 2014-01-17 18:16 Uriel 閱讀(272) 評論(0)  編輯 收藏 引用 所屬分類: LeetCode
            做的想吐血的一題,交了33次才過,創紀錄了...
            題目很簡單,就是一個字符陣,由X和O構成,找出所有O構成的連通區域,若該區域所有O都在字符陣內部(不在邊界上),則把該連通區域所有O都換成X,其余不變

            這題一看到就想著怎么這么裸的DFS,于是想也沒想敲完直接RE,看RE返回的是空數據,于是加了判board為空的語句,交上去還是RE,因為之前做LeetCode這種RE的情況都是沒有判空,于是換了N種寫法判空,還是RE

            因為是開了個數組記錄字符陣每個元素是否訪問過,又開了另一個數組判該連通區域是否鄰邊,想著是不是數組開太大了,于是試了各種數組大小,發現開bool型,只開一個數組能過,后來想到其實不需要另開一個數組記錄是否鄰邊,搜的時候只搜四邊上為O的那些位置,這樣一定是鄰邊的,這個時間復雜度也小一些,于是改了,還是RE,而且掛在大數據上,但是我并沒有開數組,不會有越界發生,然后就各種吐血的改來改去,終于AC,雖然還是很莫名...為啥之前會報RE呢?

            這是AC的代碼:

             1 class Solution {
             2 public:
             3     void DFS(int x, int y, vector<vector<char>> &board) {
             4         int tx, ty;
             5         if(x >= board.size() || y >= board[0].size() || x < 0 || y < 0 || board[x][y] != 'O') return;
             6         board[x][y] = 'Q';
             7         DFS(x, y + 1, board);
             8         DFS(x, y - 1, board);
             9         DFS(x + 1, y, board);
            10         DFS(x - 1, y, board);
            11     }
            12     
            13     void solve(vector<vector<char>> &board) {
            14         if(board.empty()) return;
            15         int row = board.size();
            16         if(!row) return;
            17         int col = board[0].size();
            18         if(!col) return;
            19         for(int i = 0; i < row; ++i) {
            20             if(board[i][0] == 'O') DFS(i, 0, board);
            21             if(board[i][col - 1] == 'O') DFS(i, col - 1, board);
            22         }
            23         for(int i = 0; i < col; ++i) {
            24             if(board[0][i] == 'O') DFS(0, i, board);
            25             if(board[row - 1][i] == 'O') DFS(row - 1, i, board);
            26         }
            27         for(int i = 0 ; i < row; ++i) {
            28             for(int j = 0; j < col; ++j) {
            29                 if(board[i][j] == 'Q') board[i][j] = 'O';
            30                 else if(board[i][j] == 'O') board[i][j] = 'X';
            31             }
            32         }
            33     }
            34 
            35 };
            亚洲AV无一区二区三区久久| 久久综合丝袜日本网| 久久天天婷婷五月俺也去| 2021国内精品久久久久久影院| 97精品依人久久久大香线蕉97| 久久777国产线看观看精品| 午夜精品久久久久成人| 婷婷久久久亚洲欧洲日产国码AV | 久久久国产99久久国产一| 久久精品国产男包| 久久AⅤ人妻少妇嫩草影院| 无码国产69精品久久久久网站| 久久涩综合| 久久综合久久综合九色| 久久久SS麻豆欧美国产日韩| 久久精品免费网站网| 久久66热人妻偷产精品9| 亚洲国产小视频精品久久久三级| 成人久久精品一区二区三区| 久久综合九色综合网站| 久久精品成人影院| 亚洲狠狠久久综合一区77777 | 无码任你躁久久久久久久| 国产成人99久久亚洲综合精品| 欧美噜噜久久久XXX| 久久久久久久精品成人热色戒 | 伊人久久大香线蕉精品不卡| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 99久久国产宗和精品1上映| 亚洲人成网站999久久久综合| 精品国产热久久久福利| a级毛片无码兔费真人久久| 久久最近最新中文字幕大全| 粉嫩小泬无遮挡久久久久久 | 久久久青草青青国产亚洲免观| 国产精品久久久久9999| 国产成人综合久久综合| 久久精品国产福利国产秒| 秋霞久久国产精品电影院| 国产A级毛片久久久精品毛片| 精品99久久aaa一级毛片|