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

谷歌onsite的一道题

全局:

2016(1-3月) 码农类General 博士 全职@google - 猎头 - HR筛选 技术电面 Onsite  | | Fail | 在职跳槽

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
闲来无事,想起一道当年面谷歌的题目。是第二轮,先是问了常见排序算法的复杂度。然后正题是给一个stream of int, 求sum, average, median.
话说sum 和 average是很trival的,记录sum和stream int 的count 即可。这个m
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
. 是stream of stock value, 有时间戳的。这样就可以比较容易的修改了。应该还是要尽量保证顺序存储,这样查找起来应该比较方便。

评分

参与人数 2大米 +8 收起 理由
weitongg + 1 赞一个
匿名用户-9UXIP + 7

查看全部评分


上一篇:亚马逊 intern oa2
下一篇:ToSimple 新鲜oa
推荐
tinlittle 2020-1-9 15:56:16 | 只看该作者
全局:
数据流running median是经典的用到两个heap的题,可不是楼主说的两个queue啊。路过的走马观花的,可不要给误导了。
回复

使用道具 举报

全局:
dayfine 发表于 2020/01/09 15:12:13
stream怎么修改 异想天开吧... 哪个面试官一拍脑门想到的
可能是模拟传输错误 哈哈
回复

使用道具 举报

推荐
thorax 2020-1-20 05:44:02 | 只看该作者
全局:
wx6807 发表于 2020-1-9 16:52
刚做了这一道,直接有序动态数组,一个个插入,没啥好办法。 每次插入都是 log n。 两个heap反而慢,每次倒 ...
  1.     public void addNum(int num) {
  2.         if (len == 0) arr.add(num);  //avoid null exception
  3.         int index = add(num, 0, len - 1);
  4.         arr.add(index, num);          //  <-----------  这一行需要O(n)时间

  5.         len++;
  6.     }

复制代码


一个array不行吧,array list在中间插入要额外花时间的
回复

使用道具 举报

🔗
dayfine 2020-1-9 15:12:13 | 只看该作者
全局:
stream怎么修改 异想天开吧... 哪个面试官一拍脑门想到的
回复

使用道具 举报

全局:
只改一个的话,median可以看这个数改了前后在哪一堆里,不要找到删除吧
回复

使用道具 举报

全局:
xiaoduoduo 发表于 2020/01/09 15:16:24
只改一个的话,median可以看这个数改了前后在哪一堆里,不要找到删除吧
确实不大行,还要算sum 和 avg  
回复

使用道具 举报

全局:
CalL_Me_Joker 发表于 2020/01/09 15:54:26
确实不大行,还要算sum 和 avg
Sum 跟AVG只要update difference就行了。median按新旧值是不是在同一堆来计算
回复

使用道具 举报

全局:
刚做了这一道,直接有序动态数组,一个个插入,没啥好办法。 每次插入都是 log n。 两个heap反而慢,每次倒腾要额外耗费,2lg(n/2),感觉有点秀操作的意思

补充内容 (2020-1-9 00:58):
https://leetcode.com/problems/fi...into-a-sorted-array

补充内容 (2020-1-19 15:10):
谢谢楼下的提醒。这个方法复杂度不如双heap,因为arraylist add 复杂度是O(n)。
回复

使用道具 举报

🔗
麻倉枼 2020-1-10 21:05:36 | 只看该作者
全局:
两个iterator,一个左边,一个右边,都指向最中间的一个/两个数,根据情况更新左边的iterator的位置。这是求median的。
sum的话用Fenwick tree,update() 和query()都是O(logn),专门应付real-time update的。
average的话可能Segment tree更好一点,因为每个Node都有一个range,直接找出相应Node位置求average。
回复

使用道具 举报

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

本版积分规则

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