Leetcode Surrounded Regions
Surrounded Regions
DFS
class Solution {
public:
void solve(vector<vector<char>> &board)
{
int n=board.size();
if(n==0)return;
for(int i = 1; i < n- 1; i++)
{
dfs(board, i, 0);
dfs(board, i, n-1);
}
for(int j = 0; j < n; j++){
dfs(board,0,j);
dfs(board,n-1,j);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(board[i][j]=='O')board[i][j]='X';
if(board[i][j]=='C')board[i][j]='O';
}
}
}
void dfs(vector<vector<char>> &board,int x,int y)
{
if(x<0||x>board.size()-1||y<0||y>board.size()-1)
{
return;
}
if(board[x][y]=='O')
{
board[x][y]='C';
dfs(board,x+1,y);
dfs(board,x-1,y);
dfs(board,x,y+1);
dfs(board,x,y-1);
}
}
};
在dfs函数中,开始写的是dfs(vector<vector<char>> &board,int x,int y,int n)n为数组长度,导致judge large 最后一条记录runtime error。推测是递归次数太多
参数过多导致栈溢出。
另外初始的时候添加了一个数组标志是否已访问导致内存溢出。
浙公网安备 33010602011771号