Redian新闻
>
是不是只要能接到移民局的信就不是必须改地址?
avatar
是不是只要能接到移民局的信就不是必须改地址?# EB23 - 劳工卡
r*h
1
具体代码如下,思路就是从每个边界节点为起点做dfs,最后将未被访问到的'O'设置成
'X'
查看了一下,每个节点只被访问过一遍,不知道为什么结果TLE了。请大家帮忙看一下
,谢谢~
public class Solution {
int[][] direction = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};

public void solve(char[][] board) {
// Start typing your Java solution below
// DO NOT write main() function
if(board.length == 0) return;
int m=board.length, n=board[0].length;
if(m<=2 || n<=2) return;

int[][] visited = new int[m][n];

for(int i=0; iif(visited[0][i] == 0 && board[0][i] == 'O')
dfs(board, visited, 0, i);
if(visited[m-1][i] == 0 && board[m-1][i] == 'O')
dfs(board, visited, m-1, i);
}

for(int i=1; iif(visited[i][0] == 0 && board[i][0] == 'O')
dfs(board, visited, i, 0);
if(visited[i][n-1] == 0 && board[i][n-1] == 'O')
dfs(board, visited, i, n-1);
}

for(int i=1; ifor(int j=1; jif(visited[i][j]==0 && board[i][j]=='O')
board[i][j] = 'X';
}
}

return;
}

public void dfs(char[][] board, int[][] visited, int i, int j){
visited[i][j] = 1;
int ni, nj;
for(int n=0; n<4; n++){
ni = i+direction[n][0];
nj = j+direction[n][1];

if(ni>=0 && ni=0 && njif(visited[ni][nj] == 0 && board[ni][nj] == 'O')
dfs(board, visited, ni, nj);
}
}
}
}
avatar
t*y
2
因为工作原因换了住址,但家的地址没变,家人依旧能接到信,我给移民局客服打了电
话,问这种情况是不是必须改地址,得到答复是不必须,只要能接到信就行
和版上的同学确认一下。
avatar
r*e
3
DFS可能的问题是call stack太深了
换成BFS吧

【在 r**h 的大作中提到】
: 具体代码如下,思路就是从每个边界节点为起点做dfs,最后将未被访问到的'O'设置成
: 'X'
: 查看了一下,每个节点只被访问过一遍,不知道为什么结果TLE了。请大家帮忙看一下
: ,谢谢~
: public class Solution {
: int[][] direction = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};
:
: public void solve(char[][] board) {
: // Start typing your Java solution below
: // DO NOT write main() function

avatar
F*u
4
那就是个通信地址
你就是写你朋友家也行
只要你收得到信

【在 t****y 的大作中提到】
: 因为工作原因换了住址,但家的地址没变,家人依旧能接到信,我给移民局客服打了电
: 话,问这种情况是不是必须改地址,得到答复是不必须,只要能接到信就行
: 和版上的同学确认一下。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。