可以过80%的test cases,一个很大的grid结果总是差1。哪位高人看看下面code逻辑有
什么问题吗?不超时。刚才上eclipse跑,数1数的眼睛都快瞎了。
public int numIslands(char[][] grid) {
if(grid==null || grid.length==0 || grid[0].length==0)
return 0;
int row=grid.length, col=grid[0].length;
int res=0;
for(int i=0; i
for(int j=0; jif(grid[i][j]=='1'){
bfs(i, j, grid);
res++;
}
}
}
return res;
}
public void bfs(int i, int j, char[][] grid){
int row=grid.length, col=grid[0].length;
Queue q=new LinkedList();
int pos=i*col+j;
q.offer(pos);
while(!q.isEmpty()){
int n=q.poll();
int px=n/col, py=n%col;
if(px<0 || px>=row || py<0 || py>=col || grid[px][py]=='0')
continue;
else{
grid[px][py]='0';
q.offer((px+1)*col+py);
q.offer((px-1)*col+py);
q.offer(px*col+py+1);
q.offer(px*col+py-1);
}
}
}