leetcode ----130. Surrounded Regions

    xiaoxiao2021-11-29  28

    思路:

    先遍历整个四个边,如果边上有‘O’,那就沿着‘O’一直遍历,把所有的‘O’都变成‘#’,遍历完成四条边后,然后遍历真个图,遇到‘O’就赋值‘X’,遇到‘#’还原成‘O’

    void helper(vector<vector<char>> &board,int i,int j) //检查边界是否有‘O’,有的话置为‘#’,沿着‘O’一直检查 { if(board[i][j]=='O') { board[i][j]='#'; if(i>1) helper(board,i-1,j);//左边 if(j>1) helper(board,i,j-1);//上边 if(i+1<board.size()) helper(board,i+1,j);//右边 if(j+1<board[0].size()) helper(board,i,j+1);//下边 } } void solve(vector<vector<char>>& board) { if(board.empty()) return ; int row = board.size(),col = board[0].size();// for(int i=0;i<row;i++)// { helper(board,i,0);//检测第一列 helper(board,i,col-1);//检测最后一列 } for(int j=1;j<col-1;j++) { helper(board,0,j);//检测第一行 helper(board,row-1,j);//检测最后一行 } for(int i=0;i<row;i++)//把里面的‘O’替换成‘X’,把‘#’还原成‘O’ { for(int j=0;j<col;j++) { if(board[i][j]=='O') board[i][j]='X'; else if(board[i][j]=='#') board[i][j]='O'; } } }

    转载请注明原文地址: https://ju.6miu.com/read-678784.html

    最新回复(0)