一亩三分地论坛

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

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

Google电面

[复制链接] |试试Instant~ |关注本帖
ALin 发表于 2015-11-19 07:23:07 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 全职@Google - 校园招聘会 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
新鲜的google电面
刚刚挂了电话,欲哭无泪啊。dream company就这么再见了
遇到一个口音很重的三哥,不废话直接贴题:
implement sortedMap,
void put(key, value);
get(key);
getAt(index);//取得key排在index位置的value.鐣欏璁哄潧-涓浜-涓夊垎鍦
不能用map,只能用最基础的数据结构,我用比较naive的linkedlist做的,就是put时候比较一下key然后找到对应位置插入。很快就码好了,三哥表示O(n)时间复杂度太高,followup让我提高查询的时间复杂度, 然后我就卡住了,试了好几种方法三哥都说不好,感觉提高的话需要重新设计我的结构。时间不够第二题了,问了问什么时候feedback就GG了。

求人品,求大米

评分

3

查看全部评分

mynn2003 发表于 2015-11-19 07:44:39 | 显示全部楼层
这个用BST吧, AVL 或者 红黑都可以
回复 支持 反对

使用道具 举报

三根呆毛 发表于 2015-11-19 07:47:27 | 显示全部楼层
感觉可以用树来做
回复 支持 反对

使用道具 举报

 楼主| ALin 发表于 2015-11-19 09:35:57 | 显示全部楼层
mynn2003 发表于 2015-11-19 07:44
这个用BST吧, AVL 或者 红黑都可以

是的,现在感觉用树做比较好,当时没思考就直接开做了,后面优化的时候不想改结构就GG了
回复 支持 反对

使用道具 举报

jmnjmnjmn 发表于 2015-11-19 13:04:24 | 显示全部楼层
ALin 发表于 2015-11-19 09:35
是的,现在感觉用树做比较好,当时没思考就直接开做了,后面优化的时候不想改结构就GG了

用BST的话  怎么才能快速getAt(index)啊
回复 支持 反对

使用道具 举报

mynn2003 发表于 2015-11-19 13:32:39 | 显示全部楼层
jmnjmnjmn 发表于 2015-11-19 13:04
用BST的话  怎么才能快速getAt(index)啊
. 鍥磋鎴戜滑@1point 3 acres

更快的办法是加一个权重在每一节点,记录的是左右子树子节点的个数,put的时候更新,这样能到logn
回复 支持 反对

使用道具 举报

 楼主| ALin 发表于 2015-11-19 13:34:22 | 显示全部楼层
jmnjmnjmn 发表于 2015-11-19 13:04.鏈枃鍘熷垱鑷1point3acres璁哄潧
用BST的话  怎么才能快速getAt(index)啊

应该就是让你implement java里面的Treemap,基本功不牢,想到了Treemap但是一时想不起红黑树之类的如何implement,就用了最简单的方法。
回复 支持 反对

使用道具 举报

mynn2003 发表于 2015-11-19 13:37:37 | 显示全部楼层
ALin 发表于 2015-11-19 13:34.鐣欏璁哄潧-涓浜-涓夊垎鍦
应该就是让你implement java里面的Treemap,基本功不牢,想到了Treemap但是一时想不起红黑树之类的如何im ...
. Waral 鍗氬鏈夋洿澶氭枃绔,
电面要实现个avl或者rb那就是故意黑了,我觉得基本的bst就能满足要求了
回复 支持 反对

使用道具 举报

Miaaaaa 发表于 2015-11-19 23:04:14 | 显示全部楼层
弱问用arraylist,二分查询这样可以吗?
感觉面试的时候要手写红黑也太难了……
回复 支持 反对

使用道具 举报

 楼主| ALin 发表于 2015-11-20 08:40:00 | 显示全部楼层
Miaaaaa 发表于 2015-11-19 23:04
弱问用arraylist,二分查询这样可以吗?
感觉面试的时候要手写红黑也太难了……
.1point3acres缃
优化的时候我就是想用这个,因为我没用java list类而是自己造的list,没法直接访问index,然后我就开始重新改结构,三哥说这样时间不够最后只让我说了下想法。以前都是先用最简单的方法实现再想优化,感觉以后要先想清楚再开始码,省得到时候改结构的从头开始。
回复 支持 反对

使用道具 举报

nash142857 发表于 2015-11-21 06:59:23 | 显示全部楼层
我觉得就写个bst, 然后用个arraylist 讲节点串起来getAt(i)就O(1)了。。(因为不需要提供remove功能,所以arraylist肯定ok。
回复 支持 反对

使用道具 举报

gjxwin 发表于 2015-11-21 07:17:44 | 显示全部楼层
nash142857 发表于 2015-11-21 06:59
我觉得就写个bst, 然后用个arraylist 讲节点串起来getAt(i)就O(1)了。。(因为不需要提供remove功能,所以 ...

毕竟大佬,太屌了
回复 支持 反对

使用道具 举报

mynn2003 发表于 2015-11-21 10:41:46 | 显示全部楼层
nash142857 发表于 2015-11-21 06:59
我觉得就写个bst, 然后用个arraylist 讲节点串起来getAt(i)就O(1)了。。(因为不需要提供remove功能,所以 ...

请问能不能详细说说怎么把node串起来,因为每次put的时候都需要move数组里的元素,如果用的话只能是

.鏈枃鍘熷垱鑷1point3acres璁哄潧补充内容 (2015-11-21 10:42):


补充内容 (2015-11-21 10:42):
双亲表示法吗?
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-12-5 05:22:53 | 显示全部楼层
nash142857 发表于 2015-11-21 06:59
我觉得就写个bst, 然后用个arraylist 讲节点串起来getAt(i)就O(1)了。。(因为不需要提供remove功能,所以 ...

你这个用arraylist没什么用吧,只用bst就行了吧
回复 支持 反对

使用道具 举报

mynn2003 发表于 2015-12-5 05:30:15 | 显示全部楼层
和这道题很想 leetcode Kth Smallest Element in a BST
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 07:39

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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