回复: 14
收起左侧

分享一道C家DS电面题

本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30

2019(7-9月) 分析|数据科学类 硕士 全职@citadel - 猎头 - 技术电面  | | Other | 在职跳槽

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
问题大致是:.
有一个500w的数据,三列id(用户id,身份id啥之类的),只要有一种id相同的就可以看成是一个人,最后需要对每行数据输出一个标签,相同的人标签要
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
点复杂,面试官说还行,问还有没有更优化的,没时间了,分享大家,一起讨论,求加米!

上一篇:Jobcase 三轮interview面经
下一篇:Jam City DA 面试挂经

本帖被以下淘专辑推荐:

simba2019 2020-10-20 12:25:09 | 显示全部楼层
本楼:   👍  1
100%
0%
0   👎
全局:   263
92%
8%
22
Union Find.1point3acres

先按照id1合并.--
再按照id2合并
最后按照id3合并

时间复杂度O(n). 1point 3 acres
回复

使用道具 举报

jbdx6308 2019-7-16 04:38:26 | 显示全部楼层
本楼:   👍  1
100%
0%
0   👎
全局:   43
100%
0%
0
我先想到的是类似clustering的办法 把a,b,c 分别看成x,y,z , 比较每一个observation与其他observation 计算 min(deltax, deltay, deltaz), 把min=0的全部cluster到一类 不过这个也是O(N^2)
如果三列id像example里一样是sorted的话,把a,b,c 分别看成x,y,z , 然后一行一行的比 计算 min(deltax, deltay, deltaz)  如果等于0, 那么下一行就和上一行是一个人, 如果不是 那就是两个人。 这样 O(n)
如果不是sorted的话 ,sort一下 再用上面的方法是O(NlogN+N)


回复

使用道具 举报

jzhao59 2019-7-15 21:37:22 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   6479
95%
5%
326
第一感觉是如果有冲突怎么办?
回复

使用道具 举报

 楼主| jev9 2019-7-16 08:25:11 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30
jzhao59 发表于 2019/07/15 21:37:22
第一感觉是如果有冲突怎么办?

为啥会有冲突?
回复

使用道具 举报

jzhao59 2019-7-16 08:28:59 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   6479
95%
5%
326
jev9 发表于 2019-7-15 18:25
为啥会有冲突?

如果同一行用户ID和身份ID分别属于不同的人,这种情况怎么办?(如果我的理解没错)
回复

使用道具 举报

 楼主| jev9 2019-7-16 10:47:19 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30
jzhao59 发表于 2019-7-16 08:28
如果同一行用户ID和身份ID分别属于不同的人,这种情况怎么办?(如果我的理解没错)
. From 1point 3acres bbs
额。。不会啊,三种id,只要有一种相同就是一个人的
回复

使用道具 举报

 楼主| jev9 2019-7-16 10:48:31 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30
jbdx6308 发表于 2019-7-16 04:38
我先想到的是类似clustering的办法 把a,b,c 分别看成x,y,z , 比较每一个observation与其他observation 计算 ...
. .и
这个方法不错,比我的简单多了。。btw,如果用python面试,可以默认是可以用pandas,numpy这些的吗。。
回复

使用道具 举报

 楼主| jev9 2019-7-16 13:55:40 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30
更新一下,有朋友了解电面之后多久会接到通知吗
回复

使用道具 举报

 楼主| jev9 2019-7-16 18:05:58 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   44
59%
41%
30
jbdx6308 发表于 2019-7-16 04:38
我先想到的是类似clustering的办法 把a,b,c 分别看成x,y,z , 比较每一个observation与其他observation 计算 ...

想了一下有个问题,就是这个sort的话,这样三列sort,可以合并的id,有些始终不会相邻啊?
a,b,c
1,33,555. 1point 3acres
1,44,666.google  и
2,44,777
3,55,777
3,66,888
4,77,999. 1point3acres.com
5,88,1000
6,77,333
8,99,555
回复

使用道具 举报

jbdx6308 2019-7-18 02:18:01 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   43
100%
0%
0
jev9 发表于 2019/07/16 18:05:58


想了一下有个问题,就是这个sort的话,这样三列sort,可以合并的id,有些始终不会相邻啊?
a,b,c
1,33,555
1,44,666
2,44,777
3,55,777
3,...

啊 也是 sort这样确实不行。 或者可以这样 类似hash map, 先建一个dict,把所有行都放进去 每行对应值为0, 然后一列一列的sort, 先sort a, 把id相同的在dict里都赋予一个值。 然后sort b, 发现id相同的列 就去dict里看 如果有一列已经赋值了, 那其它几列跟着一起赋相同的值
dict不是loop,在里面查找average time complexity 是 O(1). .и
这样三列的话是time complexityO(3nlogn+3n)  不过因为要存储dict, space complexity 会增加

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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