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。推测是递归次数太多
参数过多导致栈溢出。
另外初始的时候添加了一个数组标志是否已访问导致内存溢出。