May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 1833|回复: 6
收起左侧

google 面经题

[复制链接] |试试Instant~ |关注本帖
bobzhang2004 发表于 2016-4-1 10:05:52 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 全职@Google - 内推 - HR筛选 |Other其他

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
Considering there are N engineers in one company with id from 1 to N, Each of the Engineer has a skill rate R_i, we want to select one group of engineering whose ids have to be continuous. The size of one group is the number of engineers in it and the skill rating of the group is the lowest rating of all the members in the group. Now given N and array R, for each group from size X from 1 to N, we want to know the highest skill rating of all the groups whose size is X。 这个题感觉用heap来做的话. java普通的priorityqueue删除是O(n)的啊,如果要做到O(lgn),需要时hash heap啊,“we want to know the highest skill rating of all the groups whose size is X.”是说每个window中找最小值,然后求的是整个过程中的最大值. 如果用hash heap的话可以到O(nlgnk), 如果是普通的话是O(nk)
 楼主| bobzhang2004 发表于 2016-4-1 10:38:33 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
写了下第一轮的代码,这里使用普通的priorityqueue, 时间复杂度是O(nk)
  1. public class MaximumInMinimumInWindowK {
  2. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  3.         public static void main(String[] args) {
  4.                 int[] arr = {3, 2, 5, 2, 9, 3, 7, 6, 5};
  5.                 System.out.println(getMaximumInMinimumInWindowK(arr, 3));. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  6.         }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  7.         public static int getMaximumInMinimumInWindowK(int[] arr, int k) {
  8.                 if (arr == null || arr.length == 0) {
  9.                         return Integer.MIN_VALUE;
  10.                 }
  11.                 int res = Integer.MIN_VALUE;
  12.                 PriorityQueue<Integer> pq = new PriorityQueue<Integer>(k);
  13.                 for (int i = 0; i < arr.length; i++) {
  14.                         pq.offer(arr[i]);
  15.                         if (i >= k - 1) {.鏈枃鍘熷垱鑷1point3acres璁哄潧
  16.                                 res = Math.max(res, pq.peek());. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  17.                                 pq.remove(arr[i - k + 1]);
  18.                         }
  19.                 }

  20.                 return res;. 1point3acres.com/bbs
  21.         }
  22. }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
复制代码
回复 支持 反对

使用道具 举报

say543 发表于 2016-4-1 14:42:01 | 显示全部楼层
关注一亩三分地微博:
Warald

谢分享 感觉像是sliding window 找出所有window 的representatives(每个window 以最小为representatives) 然后取最大的 因该o(nk) 就行了? dequeue 感觉就足够?
回复 支持 反对

使用道具 举报

ok123 发表于 2016-4-3 11:30:47 | 显示全部楼层
》》java普通的priorityqueue删除是O(n)的啊
题目没有看懂。但是 priorityQ remove应该是lgN吧
.1point3acres缃
用最后一个元素overwrite要remove的,让后heapify这个node
回复 支持 反对

使用道具 举报

Alice0701 发表于 2016-4-4 03:51:56 | 显示全部楼层
赞楼主 谢谢分享!
回复 支持 反对

使用道具 举报

jy_121 发表于 2016-4-27 00:30:03 | 显示全部楼层
ok123 发表于 2016-4-3 11:30. 1point3acres.com/bbs
》》java普通的priorityqueue删除是O(n)的啊. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
题目没有看懂。但是 priorityQ remove应该是lgN吧
. 1point 3acres 璁哄潧
查找要删除的元素不是要O(n)吗?
回复 支持 反对

使用道具 举报

Peripatetic 发表于 2016-4-27 03:36:38 来自手机 | 显示全部楼层
Maximun sliding window变种 找每个window最小值 最后取所有最小的最大 线性时间
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-5-22 23:35

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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