麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Leetcode 130. Surrounded Regions

2019-11-14 10:15:27
字體:
來源:轉載
供稿:網友

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

A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region.

For example,

X X X XX O O XX X O XX O X X

After running your function, the board should be:

X X X XX X X XX X X XX O X X

s思路: 1. 這種二維的題,套路就是用dfs。 2. 仔細觀察和分辨,o有兩種位置,一種是被包圍的,一種是不被包圍的,不被包圍的就一定在四個邊沿上可以看見。 3. 處理這兩個位置,有兩種思路:一種就是直接把被包圍的找出來,然后替換成x;另一種,則反其道而行。不直接找被包圍的,相對于被包圍的,沒有被包圍的更容易找到,就在四邊,通過遍歷四條邊沿,把和這些邊連接的o找到,先暫時換成s,然后遍歷一遍全部的符號,把o換成x,最后再遍歷一遍,把s換回o即可! 4. 哪個方法好?哪個快呢?先看第一個思路:在某個位置發現一個o,然后用dfs找相鄰的o,這時候是還不知道這一塊能不能被x全包圍,就這么找,等相鄰的區域全遍歷過,發現能全包圍,再遍歷一遍把這些o給修改成o,很麻煩;而第二個思路中,就沒有這樣的問題,因為我們事先已經知道這些o是不被包圍的,所以遍歷的同時就修改成s,多省事!所以這個問題還是在邊界處思考,求得解答!很多題的妙解都是在基于對邊界的考慮,因為在邊界處的行為是清楚的! 5. 你看,看問題把兩個方便都擺出來,比較比較,每個思路都想想,掂量掂量,也就差不多能看清問題的要害了! 6. 還可以用union find?

class Solution {public: void helper(vector<vector<char>>& board,vector<vector<int>>&dir,int i,int j){ ///* if(i<0||i>=board.size()||j<0||j>=board[0].size()||board[i][j]!='O') return; board[i][j]='S'; for(int k=0;k<4;k++){ helper(board,dir,i+dir[k][0],j+dir[k][1]); }*/ //bug:參考解釋https://discuss.leetcode.com/topic/29091/why-this-code-has-runtime-error/3 //上面的解法導致stackoverflow!! if(board[i][j]=='O'){ board[i][j]='S'; if(i>1) helper(board,dir,i-1,j); if(i<board.size()-1) helper(board,dir,i+1,j); if(j>1) helper(board,dir,i,j-1); if(j<board[0].size()-1) helper(board,dir,i,j+1); } } void solve(vector<vector<char>>& board) { // int m=board.size(); if(m<2) return; int n=board[0].size(); if(n<2) return; vector<vector<int>> dir={{1,0},{-1,0},{0,1},{0,-1}}; for(int j=0;j<n;j+=(n-1)){//bug:n做了操作,需要保證n-1>=1,否則for循環就是死循環 for(int i=0;i<m;i++){ //if(board[i][j]=='O') helper(board,dir,i,j); } } for(int i=0;i<m;i+=(m-1)){ for(int j=0;j<n;j++){ //if(board[i][j]=='O') helper(board,dir,i,j); } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(board[i][j]=='O') board[i][j]='X'; else if(board[i][j]=='S') board[i][j]='O'; } } }};
上一篇:文件

下一篇:13.1.4

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕在线永久 | 欧美伦交| 成人午夜激情网 | 国产精品久久久久无码av | 久久一区三区 | 日韩视频在线观看免费 | 精品亚洲二区 | fc2国产成人免费视频 | 91精品国产毛片 | 一级毛片在线免费播放 | 国内xxxx乱子另类 | 日韩欧美高清片 | 日韩专区在线 | 色就色 综合偷拍区91网 | 国产女厕一区二区三区在线视 | 国产永久免费观看 | 在线亚洲欧美日韩 | 国产精品免费一区二区三区四区 | 精国品产一区二区三区有限公司 | 黄色一级片免费观看 | 国产精品久久久久久久久久尿 | a免费看| 欧美成人国产va精品日本一级 | 久久福利小视频 | 国产91丝袜在线熟 | 国产自91精品一区二区 | 激情视频导航 | 免费黄色在线观看网站 | 国产精品视频一区二区三区四区国 | 欧美成人精品一区二区三区 | 男人的天堂毛片 | 久久久综合 | 精品久久一区二区三区 | 福利在线免费 | 素人视频在线观看免费 | 狠狠干五月天 | 特级无码毛片免费视频尤物 | 亚洲看片网 | 国产精品一区二区日韩 | 国产精品一区二区三区在线播放 | 国产人成免费爽爽爽视频 |