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

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

🔗
kang1415926 2014-3-17 22:35:32 | 只看该作者
全局:
whuwangyi 发表于 2014-3-17 22:26
elements of programming interview

Thanks!
回复

使用道具 举报

🔗
金妮韦崽 2014-3-19 22:49:42 | 只看该作者
全局:
这题我也是面g家的时候面过(而且是电面,应该不是同一个人问的吧……!)而且应该是面的还不错。
面试官推荐的方法如下:

首先sort一遍,一般情况下这个data structure都自带排序算法,假设速度nlogn。
然后再这么排序:拿第一个,最后一个,第二个,倒数第二个,。。。,最中间那个。这次排序算法O(n),所以整个程序运行下来就是个O(nlogn) (assume sort(list) takes O(nlogn) time...)

其实后来我面完了发现还可以有更简单的:第二三个数对调,第四五个数对调,。。。这个我还没验证过正确性,应该问题不大。
回复

使用道具 举报

🔗
 楼主| Linzertorte 2014-3-20 00:27:47 | 只看该作者
全局:
金妮韦崽 发表于 2014-3-19 22:49
这题我也是面g家的时候面过(而且是电面,应该不是同一个人问的吧……!)而且应该是面的还不错。
面试官推 ...

你说的第二种是对的。我已经在前面给出了代码。
证明也很容易。

比如 1 2 3.第三个数是需要比第二个小的。
这个时候你交换2,3,   ->  1 3 2.  因为 3比2 大你才交换的,所以 3肯定比1大,  A[0]<=A[1]仍然满足。
回复

使用道具 举报

🔗
Lisepher 2014-3-21 01:50:33 | 只看该作者
全局:
恭喜楼主! 另问楼主Onsite时都是算法题吗?有设计题吗?能否透露一下?谢谢!
回复

使用道具 举报

🔗
 楼主| Linzertorte 2014-3-21 10:07:02 | 只看该作者
全局:
Lisepher 发表于 2014-3-21 01:50
恭喜楼主! 另问楼主Onsite时都是算法题吗?有设计题吗?能否透露一下?谢谢!

我运气比较好,没有遇到设计题。
回复

使用道具 举报

🔗
songfan9905 2014-3-26 03:27:57 | 只看该作者
全局:
1. linear time selection找到中位数, O(N)
2. in place partition, 保证第一部分所有元素<=median,第二部所有元素>=median,O(N)
3. merge前后两部分, O(N)

时间复杂度O(N),空间复杂度O(1)
回复

使用道具 举报

🔗
 楼主| Linzertorte 2014-4-1 10:53:39 | 只看该作者
全局:
youliye 发表于 2014-4-1 07:52
一定是我想的太简单了。。。我总是太天真。。。楼主要嘲笑的话放心里哈。。。
def shuffle(arr):
        if arr ...

你这样是完全正确的。其实我写了C++ 的代码了。只是大家都没看。

我的C++代码跟你的是一个意思。
回复

使用道具 举报

🔗
 楼主| Linzertorte 2014-4-1 10:55:10 | 只看该作者
全局:
youliye 发表于 2014-4-1 07:52
一定是我想的太简单了。。。我总是太天真。。。楼主要嘲笑的话放心里哈。。。
def shuffle(arr):
        if arr ...

去看第18垅。
回复

使用道具 举报

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

本版积分规则

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