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

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

Leetcode 130. Surrounded Regions

2019-11-14 09:18:43
字體:
來源:轉載
供稿:網友

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'; } } }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级成人在线 | 成人男女啪啪免费观看网站四虎 | 免费一级在线观看 | 欧美一级黄| 91aa.app| 日韩精品羞羞答答 | 欧美爱爱一区二区 | 成人免费一区二区三区在线观看 | 精品国产乱码久久久久久久久 | 在线播放中文 | 欧美伦交 | 色播av在线| www69xxxxx| 欧美日在线观看 | 一级黄片毛片免费看 | 久久精品中文字幕一区二区 | 久久国产精品久久久久久久久久 | 精品国产乱码久久久久久丨区2区 | 91在线视频导航 | 久久久久久久99 | 亚洲网站免费观看 | 99pron| 亚洲3p激情在线观看 | 欧美精品欧美 | 五月婷婷第四色 | 国产精品久久久久久久久久久久久久久久 | 黄色免费影片 | 国产污污视频 | 欧美一级电影网站 | 国产免费观看视频 | 国产精品久久久久久久久久久久午夜 | 亚洲一区二区三区精品在线观看 | 黄色网址免费进入 | 日本特级a一片免费观看 | 国产一级aaa全黄毛片 | 欧美 日韩 国产 成人 | 日韩视频一区二区三区在线观看 | 国产精品久久久久久久久久了 | 日本一区二区在线 | 亚洲欧美日韩一区二区三区在线观看 | av在线播放免费观看 |