由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 诡异的number of islands.
相关主题
leetcode number of islands为什么不能用BFS?问个关于排序的面试题
leetcode - 130的答案我恨iPhone@Facebook电面
word ladder 时间空间复杂度是多少, bfs 解的a2z(amazon 子公司)电面题目
Binary Tree Level Order Traversal为什么老通不过[题已更新/求到F继续M]G onsite悲剧了,求M,F的refer行么
leetcode做伤心了分享下G家第一个phone interview的题目
LRU cache 超时, 大家帮忙看看一道Linked List题
一道program challenge的题DFS比BFS好在哪?
职业杯另外一道service now 卧佛和面筋
相关话题的讨论汇总
话题: col话题: py话题: px话题: grid话题: int
进入JobHunting版参与讨论
1 (共1页)
d*********g
发帖数: 38
1
可以过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; j if(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);
}
}
}
d********o
发帖数: 23
2
int pos=i*col+j;
q.offer((px+1)*col+py);
q.offer((px-1)*col+py);
q.offer(px*col+py+1);
q.offer(px*col+py-1);
}
会越界的
这种编码需要col + 1, row + 1
d*********g
发帖数: 38
3
从queue取出的时候已经做了check了
if(px<0 || px>=row || py<0 || py>=col || grid[px][py]=='0')
continue;
另外oj也没有报越界的错。

【在 d********o 的大作中提到】
: int pos=i*col+j;
: q.offer((px+1)*col+py);
: q.offer((px-1)*col+py);
: q.offer(px*col+py+1);
: q.offer(px*col+py-1);
: }
: 会越界的
: 这种编码需要col + 1, row + 1

j******8
发帖数: 105
4
最后有问题,
q.offer((px+1)*col+py);
q.offer((px-1)*col+py);
q.offer(px*col+py+1);
q.offer(px*col+py-1);//px=1, py=0 will still give valid n
here which is wrong
改成这样
if(px+1 if(px-1>=0) q.add((px-1)*col+py);
if(py+1 if(py-1>=0) q.add(px*col+py-1);
算法本身就是错的,过了的cases是运气

【在 d*********g 的大作中提到】
: 可以过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; j: if(grid[i][j]=='1'){

d*********g
发帖数: 38
5
这下明白了,看来确实有越界。
d********o
发帖数: 23
6
这就是版上说的,帮了也不会感激
Good luck with your future :)

【在 d*********g 的大作中提到】
: 这下明白了,看来确实有越界。
d*********g
发帖数: 38
7
谢谢duckduckgo,你的回答也是对的,只是一开始没有看明白。
大家在这里耐心看别人的代码(有时候是乱码)解答,至少对我来说很不容易。job版
回贴的都是活雷锋。
1 (共1页)
进入JobHunting版参与讨论
相关主题
service now 卧佛和面筋leetcode做伤心了
thread-safe blockingqueueLRU cache 超时, 大家帮忙看看
leetcode 上 wordladderII 求教一道program challenge的题
G电面面经职业杯另外一道
leetcode number of islands为什么不能用BFS?问个关于排序的面试题
leetcode - 130的答案我恨iPhone@Facebook电面
word ladder 时间空间复杂度是多少, bfs 解的a2z(amazon 子公司)电面题目
Binary Tree Level Order Traversal为什么老通不过[题已更新/求到F继续M]G onsite悲剧了,求M,F的refer行么
相关话题的讨论汇总
话题: col话题: py话题: px话题: grid话题: int