一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1752|回复: 12
收起左侧

FB的电面题

[复制链接] |试试Instant~ |关注本帖
larry2119 发表于 2014-10-31 13:42:30 | 显示全部楼层 |阅读模式

2014(10-12月) 码农类 博士 全职@Facebook - 内推 - 技术电面 |Pass

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
Fb的电面。
1个2维的矩阵,里面都是0或者1, 给定一个坐标,让找到包含这个坐标点的连通域的面积。分recursive和iterative两种办法解。
用dfs, iterative用stack做。

评分

2

查看全部评分

misshary 发表于 2015-2-7 21:04:58 | 显示全部楼层
richardzrc 发表于 2014-12-10 22:49
const int dx[]={-1,1,0,0}, dy[]={0,0,-1,1};
int m, n;
bool board[500][500], visit[500][500];

亲,貌似这个不用回溯,visit设置了是1之后在递归结束后不用设置成0。否则这个点有可能在下一次又被搜到,重复计算。
回复 支持 1 反对 0

使用道具 举报

1guangnian 发表于 2014-10-31 13:47:18 | 显示全部楼层
iterative也可以用bfs啦
回复 支持 反对

使用道具 举报

22691482 发表于 2014-10-31 13:48:42 | 显示全部楼层
楼主你好,连通域的面试是不是就是1的个数?
回复 支持 反对

使用道具 举报

 楼主| larry2119 发表于 2014-10-31 13:53:54 | 显示全部楼层
22691482 发表于 2014-10-31 13:48
楼主你好,连通域的面试是不是就是1的个数?

不是,如果给的这个坐标点存的是1,就找1的联通域,如果是0,就找0的连通域
比如下面这个例子
00001111. 鍥磋鎴戜滑@1point 3 acres
10001000
00001111. from: 1point3acres.com/bbs
11110000. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
要是给(0,4)的话,是1,返回面积9;如果给(0,0),是1,返回面积11

补充内容 (2014-10-31 14:01):. 1point 3acres 璁哄潧
不好意思,(0,0)的值是0,上面笔误,不知道怎么改过来
回复 支持 反对

使用道具 举报

 楼主| larry2119 发表于 2014-10-31 13:54:06 | 显示全部楼层
22691482 发表于 2014-10-31 13:48
楼主你好,连通域的面试是不是就是1的个数?

不是,如果给的这个坐标点存的是1,就找1的联通域,如果是0,就找0的连通域
比如下面这个例子
00001111
10001000
00001111
11110000
要是给(0,4)的话,是1,返回面积9;如果给(0,0),是1,返回面积11
回复 支持 反对

使用道具 举报

22691482 发表于 2014-10-31 14:10:03 | 显示全部楼层
larry2119 发表于 2014-10-31 13:54
不是,如果给的这个坐标点存的是1,就找1的联通域,如果是0,就找0的连通域
比如下面这个例子
00001111 ...

是0 就返回连同的0的个数,是1 就返回连同的1的个数?
回复 支持 反对

使用道具 举报

Arthur2012 发表于 2014-10-31 15:36:00 | 显示全部楼层
这一题也可以用union-find做吧
回复 支持 反对

使用道具 举报

fate7612 发表于 2014-11-1 01:31:18 | 显示全部楼层
LZ请问下你是什么时候投的啊?
回复 支持 反对

使用道具 举报

atlas1017 发表于 2014-11-1 02:35:41 | 显示全部楼层
leetcode 里面的surrounded area哎 看来还是要好好刷。。
回复 支持 反对

使用道具 举报

richardzrc 发表于 2014-12-10 22:49:08 | 显示全部楼层
const int dx[]={-1,1,0,0}, dy[]={0,0,-1,1};.鏈枃鍘熷垱鑷1point3acres璁哄潧
int m, n;
bool board[500][500], visit[500][500];
int cnt;.1point3acres缃
void dfs(int i, int j, bool type)
{
    if(i>=m || i<0 || j>=n || j<0) return ;
. Waral 鍗氬鏈夋洿澶氭枃绔,    if(visit[i][j]) return ;
    if(board[i][j]!=type) return ;.鐣欏璁哄潧-涓浜-涓夊垎鍦
    visit[i][j]=1;cnt++;. 1point 3acres 璁哄潧
    for(int k=0;k<4;k++)
    {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
        int nx=i+dx[k], ny=j+dy[k];
        dfs(nx,ny, type);. visit 1point3acres.com for more.
    }
    visit[i][j]=0;
}

求大神帮看bug
回复 支持 反对

使用道具 举报

richardzrc 发表于 2015-11-9 01:33:11 | 显示全部楼层
misshary 发表于 2015-2-7 21:04
亲,貌似这个不用回溯,visit设置了是1之后在递归结束后不用设置成0。否则这个点有可能在下一次又被搜到 ...

题意我想在确认下,输入的点是0或者1,然后找到这个点的连通域?如果是0就是0的连通域,1就是1的连通域?
回复 支持 反对

使用道具 举报

misshary 发表于 2015-11-26 00:41:55 | 显示全部楼层
richardzrc 发表于 2015-11-9 01:33
题意我想在确认下,输入的点是0或者1,然后找到这个点的连通域?如果是0就是0的连通域,1就是1的连通域?

哈,这么久远的帖子还有回~应该是吧~
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 00:49

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表