May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2817|回复: 12
收起左侧

FB的电面题

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

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

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

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

评分

2

查看全部评分

misshary 发表于 2015-2-7 21:04:58 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
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 | 显示全部楼层
关注一亩三分地微博:
Warald
iterative也可以用bfs啦
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| larry2119 发表于 2014-10-31 13:53:54 | 显示全部楼层
22691482 发表于 2014-10-31 13:48
楼主你好,连通域的面试是不是就是1的个数?
.1point3acres缃
不是,如果给的这个坐标点存的是1,就找1的联通域,如果是0,就找0的连通域.1point3acres缃
比如下面这个例子
00001111
10001000
00001111. Waral 鍗氬鏈夋洿澶氭枃绔,
11110000
要是给(0,4)的话,是1,返回面积9;如果给(0,0),是1,返回面积11

补充内容 (2014-10-31 14:01): 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
不好意思,(0,0)的值是0,上面笔误,不知道怎么改过来
回复 支持 反对

使用道具 举报

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

不是,如果给的这个坐标点存的是1,就找1的联通域,如果是0,就找0的连通域
比如下面这个例子
00001111
10001000-google 1point3acres
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的连通域
比如下面这个例子. more info on 1point3acres.com
00001111 ...
. 1point3acres.com/bbs
是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};
int m, n;
bool board[500][500], visit[500][500];
int cnt;
void dfs(int i, int j, bool type)
{
    if(i>=m || i<0 || j>=n || j<0) return ;
    if(visit[i][j]) return ;. Waral 鍗氬鏈夋洿澶氭枃绔,
    if(board[i][j]!=type) return ;
    visit[i][j]=1;cnt++;
    for(int k=0;k<4;k++)
    {
        int nx=i+dx[k], ny=j+dy[k];
        dfs(nx,ny, type);. 1point 3acres 璁哄潧
    }
    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的连通域?

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

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-5-28 00:17

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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