楼主: mc422
跳转到指定楼层
上一主题 下一主题
收起左侧

Google电面,面经

🔗
八月槎 2015-10-11 08:48:20 | 只看该作者
全局:
hackenkreuz 发表于 2015-10-11 01:46
怎么没人支持这楼,这个方法很好啊!

我仔细又想了一下我的这个方法其实不太好,如果相邻两个数差别很大的时候复杂度最坏情况是n*nlogn  反而比brute force还差
回复

使用道具 举报

🔗
hackenkreuz 2015-10-11 09:57:41 | 只看该作者
全局:
八月槎 发表于 2015-10-11 08:48
我仔细又想了一下我的这个方法其实不太好,如果相邻两个数差别很大的时候复杂度最坏情况是n*nlogn  反而 ...

那种情况是不是就是每个新数都会导致两个heap内容发生全部交换?
回复

使用道具 举报

🔗
Linzertorte 2015-10-11 10:24:02 | 只看该作者
全局:
readman 发表于 2015-9-30 09:45
第二题不能用treeset么

这个是要求一个数是在BST排第几吧。无法treeset
回复

使用道具 举报

🔗
zxy_snow 2015-10-11 15:17:01 | 只看该作者
全局:
goo 发表于 2015-10-10 20:16
stl set里怎么算出前面的个数啊?  lower_bound() 可以返回大于等于的第一个元素的iterator,然后怎么算出 ...

我的错,我当时想着直接用迭代器相减,现在想想是不行的。。。不支持RB tree的迭代器
回复

使用道具 举报

🔗
leochen4891 2015-10-12 02:07:11 | 只看该作者
全局:
第二题可以用splay tree, 每个node加上size的属性。Insert之后,刚刚insert的node是在root的位置上,而且时间是O(lgN) 。所以总时间是O(NlgN)
回复

使用道具 举报

🔗
yyboyz 2015-10-14 06:30:48 | 只看该作者
全局:
mileschen2008 发表于 2015-10-1 04:16
你这个复杂度应该是O(n^2)了吧?

用TreeSet的复杂度是NlogN 最好的了

最外层从0-n

然后每次获取tailSet 要logN
总共是NlogN

有点tricky的地方是遇到重复的怎么办?

1. 每次在添加新元素进treeset时 检查一下有没有存在
    如果存在 count++;

2. 最终output[i]=tailSet.size()+count;(output是最后的leftPass,count是重复元素   tailSet= treemap.tailSet(number, false) 可得小于number的所有数字集合)
回复

使用道具 举报

🔗
monolake 2015-10-14 11:05:43 | 只看该作者
全局:
pigmightfly 发表于 2015-10-10 23:04
不太懂这个思路。。
看上去是二分查找的模板,但是二分查找的前提条件是sorted array。
能否稍微讲一下 ...

(⊙o⊙)…审题有问题,请忽略。。。
回复

使用道具 举报

🔗
mileschen2008 2015-10-15 03:59:16 | 只看该作者
全局:
yyboyz 发表于 2015-10-14 06:30
用TreeSet的复杂度是NlogN 最好的了

最外层从0-n

你这个count不行吧,因为你得求整个array的left pass。
回复

使用道具 举报

🔗
yyboyz 2015-10-16 00:54:11 | 只看该作者
全局:
mileschen2008 发表于 2015-10-15 03:59
你这个count不行吧,因为你得求整个array的left pass。

count统计的就是当前元素之前 已经出现的元素重复次数
回复

使用道具 举报

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

本版积分规则

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