📣 4th of July限时特惠: VIP通行证立减$68
楼主: Linzertorte
跳转到指定楼层
上一主题 下一主题
收起左侧

Google on-site最后一面非常难的一道题目

🔗
wyh11 2014-3-14 22:13:06 | 只看该作者
全局:
Linzertorte 发表于 2014-3-14 13:28
有个关于四分树(quad-tree)的题

囧,你遇到的题还都挺奇葩的。
回复

使用道具 举报

🔗
exuberance 2014-3-14 23:09:15 | 只看该作者
全局:
ototsuyume 发表于 2014-3-14 13:34
google电面的时候被问了这道题,这题也就看上去吼人而已,nlogn的算法是一下子能想出来的,线性的算法仔细想 ...

赞这个排序O(nlgn)的方法。

线性算法时,是不是需要注意数组第一个元素,比如 7,5, 6 ..., 这样线性算法就不对了,除了额外考虑第一个元素外,这个算法确实好
回复

使用道具 举报

🔗
ototsuyume 2014-3-15 12:27:28 | 只看该作者
全局:
exuberance 发表于 2014-3-14 23:09
赞这个排序O(nlgn)的方法。

线性算法时,是不是需要注意数组第一个元素,比如 7,5, 6 ..., 这样线性 ...

不用额外考虑第一个元素,直接从第二个开始就行,比如5是偶数位,比7小,跟7交换变成[5,7,6],然后下一个是6,比前一个小,不用交换
回复

使用道具 举报

🔗
jq2017 2014-3-15 14:29:57 | 只看该作者
全局:
O(n) 算法是正解。

归纳法证明

if i=0,1 ...

if i是偶数:if need swap a[i],a[i-1],if means a[i] < a[i-1] <= a[i-2],swap后new a[i-1] and a[i-2]依然保序.

奇数同理。

回复

使用道具 举报

🔗
exuberance 2014-3-16 05:22:18 | 只看该作者
全局:
ototsuyume 发表于 2014-3-15 12:27
不用额外考虑第一个元素,直接从第二个开始就行,比如5是偶数位,比7小,跟7交换变成[5,7,6],然后下一 ...

哦哦,明白了,多谢指点
回复

使用道具 举报

🔗
jimmyyao 2014-3-16 06:20:23 | 只看该作者
全局:
ototsuyume 发表于 2014-3-14 13:34
google电面的时候被问了这道题,这题也就看上去吼人而已,nlogn的算法是一下子能想出来的,线性的算法仔细想 ...

赞O(n)想法,轻巧的解决了问题~如果题目是求所有的shuffle会有什么样的思路呢??
回复

使用道具 举报

🔗
sjtuzyt 2014-3-16 09:38:15 | 只看该作者
全局:
sort那个办法并不需要排序,只要找到正好为median的那个数作为pivot,然后类似快排那样分一次就好。 找median应该O(n)就可以,所以也是O(n)

评分

参与人数 1大米 +5 收起 理由
22691482 + 5 机智

查看全部评分

回复

使用道具 举报

🔗
ototsuyume 2014-3-16 21:31:04 | 只看该作者
全局:
sjtuzyt 发表于 2014-3-16 09:38
sort那个办法并不需要排序,只要找到正好为median的那个数作为pivot,然后类似快排那样分一次就好。 找medi ...

对,居然没想到这个,怪不得google连续拒我两次了T T
回复

使用道具 举报

🔗
ototsuyume 2014-3-16 21:36:38 | 只看该作者
全局:
jimmyyao 发表于 2014-3-16 06:20
赞O(n)想法,轻巧的解决了问题~如果题目是求所有的shuffle会有什么样的思路呢??

求出所有符合要求的序列我只想到枚举全排列,求的时候判断当前位置是否符合要求,不符合就返回,符合就继续排后面的。感觉没有复杂度比O(n!)更优的解,但是可能会有常数级别的优化
回复

使用道具 举报

🔗
海地民工 2014-3-17 04:40:54 | 只看该作者
全局:
这道题我onsite时也碰到了,开始也是给了个排序nlgn的方法,面试小哥问我还能不能再快点,我说要是知道中位数就好办了~~后来实在想不出舔着脸要了个提示,小哥说有个方法可以O(n)时间找到中位数,但并不需要我实现这个。然后就是根据这个条件从左到右遍历数组,小于中位数的放奇数位,大于的放偶数位,然后中位数有重复,注意下这个就好了。
回复

使用道具 举报

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

本版积分规则

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