avatar
z*e
1
java的,二爷博客上的java的bfs有个bug
不过在leetcode上测不出来就是了,当m!=n的时候,二爷代码就出错了
这题真心坑爹,尤其用java做
递归的调用很容易就超时了
所以我在二爷代码的基础之上做了点优化
大概能优化50ms左右,对于小oj来说
大oj还是需要连点两次,激活jvm的jit才能过
public class Solution {

char[][] board;
int m,n;
Stack queue = new Stack();

private void fill(int i, int j){
if(i<0||j<0||i>=m||j>=n||board[i][j]!='O') return;

board[i][j] = 'D';
queue.push(i*n+j);

}

private void bfs(int i, int j){
fill(i,j);

while(!queue.isEmpty()){
int cur = queue.pop();
i = cur/n;
j = cur%n;

fill(i-1,j);
fill(i+1,j);
fill(i,j-1);
fill(i,j+1);
}
}

public void solve(char[][] board){
if(board.length == 0) return;
this.board = board;
m = board.length;
n = board[0].length;

for(int i=0;ibfs(0, i);
bfs(m-1,i);
}

for(int i=1;ibfs(i,0);
bfs(i,n-1);
}

for(int i=0;ifor(int j=0;jif(board[i][j]=='O') board[i][j] = 'X';
else if(board[i][j]=='D') board[i][j] = 'O';
}
}

}


}
avatar
c*p
2
这不就上次我说的那个么
avatar
c*e
3
先mark再说

【在 z****e 的大作中提到】
: java的,二爷博客上的java的bfs有个bug
: 不过在leetcode上测不出来就是了,当m!=n的时候,二爷代码就出错了
: 这题真心坑爹,尤其用java做
: 递归的调用很容易就超时了
: 所以我在二爷代码的基础之上做了点优化
: 大概能优化50ms左右,对于小oj来说
: 大oj还是需要连点两次,激活jvm的jit才能过
: public class Solution {
:
: char[][] board;

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