一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 683|回复: 25
收起左侧

骨骼店面面经顺便问一下约昂赛

[复制链接] |试试Instant~ |关注本帖
siy 发表于 2017-12-6 03:16:06 | 显示全部楼层 |阅读模式

2017(10-12月) 码农类 硕士 全职@Google - 内推 - 技术电面 |Passfresh grad应届毕业生

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

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

x
第一次发帖,贡献个面经。

点面一道题,给一个矩阵里面有0和1, 问判断是否以1为四个角能组成rectangle。返回是否即可。
. from: 1point3acres.com/bbs
给了n^2m^2暴力解和nm^2的set解法。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

写了第二个的code,我是自定义了一个class, 这样在用set的时候要自己写equal和hashCode。sb了纠结了一会才给弄出来。店面完了才意识到可以用HashMap<Integer, HashSet<Integer>>这样存就可以。好在给过了。

顺便问一下从hr通知过了到约onsite一般是多久。。。hr把我转给了一个recruiter,我等了一个星期多了这个recruiter也不理我,发邮件骚扰也不理。。。

谢谢大家了
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
补充内容 (2017-12-8 05:03):. Waral 鍗氬鏈夋洿澶氭枃绔,
不好意思忘记说了,当时还特意问了一下面试官,面试官意思是只需要考虑以行或列为边的矩形

评分

2

查看全部评分

HOMIE 发表于 2017-12-6 14:53:22 | 显示全部楼层
如果输入矩阵里只有0和1,那么通过对任意两行相加,如果得到的数组含有两个2,是否能证明矩形存在呢?时间复杂度是n^2 或 m^2。

补充内容 (2017-12-6 14:56):
1 0 1 1
1 1 1 0
0 0 1 1
通过对第一行和第二行进行相加,得到2 1 2 1.那么说明[0,0] [0,2] [1,0] [1,2]这四个点可以组成矩形。
只想到几个test case,不知道这个方法有没有bug。。大家可以讨论下。
回复 支持 0 反对 1

使用道具 举报

marcusg 发表于 2017-12-6 04:19:33 | 显示全部楼层
Lz什么时候面的呀
回复 支持 反对

使用道具 举报

 楼主| siy 发表于 2017-12-6 04:45:45 | 显示全部楼层
marcusg 发表于 2017-12-6 04:19. 1point3acres.com/bbs
Lz什么时候面的呀

感恩节之前两天。。。。
回复 支持 反对

使用道具 举报

codingsapien 发表于 2017-12-6 04:58:59 | 显示全部楼层
所以更好的解法应该是 nm(n + m)?
回复 支持 反对

使用道具 举报

 楼主| siy 发表于 2017-12-6 05:18:52 | 显示全部楼层
codingsapien 发表于 2017-12-6 04:58
所以更好的解法应该是 nm(n + m)?

对每一行,得到每一对1的列坐标pair,存到set里,遍历行如果有重复就true, complexity是n * m * m。应该会有更好的解法吧。
回复 支持 反对

使用道具 举报

get_bits 发表于 2017-12-6 16:37:08 来自手机 | 显示全部楼层
马克一下 谢谢楼主
回复 支持 反对

使用道具 举报

LUOLUOLNSH 发表于 2017-12-6 22:58:40 | 显示全部楼层
多谢lz分享 ~~ 想问问如果用HashMap<Integer, HashSet<Integer>>存的话 key 和value 都分别是什么泥?key 是行吗?
回复 支持 反对

使用道具 举报

啊lch 发表于 2017-12-7 01:23:48 | 显示全部楼层
HOMIE 发表于 2017-12-6 14:53
如果输入矩阵里只有0和1,那么通过对任意两行相加,如果得到的数组含有两个2,是否能证明矩形存在呢?时间 ...
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
我觉得不行吧,你这样没有考虑对角线的情况,比如说:
0 1 0 1
1 0 1 0
0 1 0 0. from: 1point3acres.com/bbs
这样的话 [0,1][1,0][1,2][2,1]也能构成一个矩形  
回复 支持 反对

使用道具 举报

penggeqiang 发表于 2017-12-7 01:28:19 | 显示全部楼层
慢慢等。。最近假期多,估计得约到1月份了
回复 支持 反对

使用道具 举报

penggeqiang 发表于 2017-12-7 01:29:04 | 显示全部楼层
啊lch 发表于 2017-12-7 01:23
我觉得不行吧,你这样没有考虑对角线的情况,比如说:
0 1 0 1. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
1 0 1 0

对角线的情况叫“菱形”吧。。
回复 支持 反对

使用道具 举报

啊lch 发表于 2017-12-7 01:45:15 | 显示全部楼层
penggeqiang 发表于 2017-12-7 01:29
对角线的情况叫“菱形”吧。。

不是啊,有时候是菱形有时候是矩形,像我举的例子就是个正方形
回复 支持 反对

使用道具 举报

penggeqiang 发表于 2017-12-7 01:49:43 | 显示全部楼层
啊lch 发表于 2017-12-7 01:45
不是啊,有时候是菱形有时候是矩形,像我举的例子就是个正方形

对,我想错了。.鐣欏璁哄潧-涓浜-涓夊垎鍦
回复 支持 反对

使用道具 举报

HOMIE 发表于 2017-12-7 08:21:08 | 显示全部楼层
啊lch 发表于 2017-12-7 01:23
我觉得不行吧,你这样没有考虑对角线的情况,比如说:. 1point 3acres 璁哄潧
0 1 0 1
1 0 1 0

同意,没想到这个case。如果考虑对角线的话,是不是需要单独考虑了,通过比较列坐标的方法就不适用于菱形。
回复 支持 反对

使用道具 举报

Nanthan_ford 发表于 2017-12-7 09:01:20 | 显示全部楼层
啊lch 发表于 2017-12-7 01:23
我觉得不行吧,你这样没有考虑对角线的情况,比如说:
0 1 0 1
1 0 1 0

感觉这道题general是不是不需要考虑这种情况吧
回复 支持 反对

使用道具 举报

get_bits 发表于 2017-12-7 17:28:19 来自手机 | 显示全部楼层
马克一下 谢谢楼主!
回复 支持 反对

使用道具 举报

zeehw 发表于 2017-12-7 17:40:50 | 显示全部楼层
siy 发表于 2017-12-6 05:18
对每一行,得到每一对1的列坐标pair,存到set里,遍历行如果有重复就true, complexity是n * m * m。应该 ...
. from: 1point3acres.com/bbs
谢谢楼主分享
这么解的话就是说这道题不用考虑组成斜的矩形的情形了吧?
回复 支持 反对

使用道具 举报

qingsong 发表于 2017-12-7 18:22:51 | 显示全部楼层
大家看这个思路行不行。
把每行看成二进制数字,所以首先把矩阵转成n个数字的数组,然后每两个数做“与”操作,结果里面有2个1,就说明可以组成矩形。
如果行数多于列数,我们可以改成把每列转成数字,所以总时间复杂度应该是O(m * n)
回复 支持 反对

使用道具 举报

hychin 发表于 2017-12-8 02:48:26 | 显示全部楼层
得看长宽多少 要是超过32位 位数组内部也只能每32个每32个与一下
回复 支持 反对

使用道具 举报

 楼主| siy 发表于 2017-12-8 05:02:19 | 显示全部楼层
LUOLUOLNSH 发表于 2017-12-6 22:58
多谢lz分享 ~~ 想问问如果用HashMap存的话 key 和value 都分别是什么泥?key 是行吗?
. From 1point 3acres bbs
key是一个纵坐标,set里面放另一个纵坐标。因为是按行遍历,不需要考虑横坐标的。如果你是按列遍历就反过来就行
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-12-16 07:49

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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