由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一道题 median ii
相关主题
问个题k sorted array merge大家现场写一个heap?
An interview question of finding the median in a moving window.G家电面的两个题
careercup书上那个maintain median value的题问两道google题
find the median of an infinite data stream of integers请教关于build heap BIG-O的问题
Google phone interview问一个面试经常问的ood,维护前k名的list的问题
G家电面题目算法题:min heap inplace变 BST
Top K in N sorted array【什么时候需要做heap, 什么时候需要做BST】
讨论一道题用什么数据结构快速insert, get median
相关话题的讨论汇总
话题: integer话题: median话题: nums话题: heap
进入JobHunting版参与讨论
1 (共1页)
c********g
发帖数: 42
1
原题:http://lintcode.com/en/problem/median-ii/
Numbers keep coming, return the median of numbers at every time a new number
added.
Time requirement: O(nlogn)
谢谢!
l**o
发帖数: 356
2
用一个最大堆,一个最小堆?
d****n
发帖数: 397
3
用两个heap.一个max heap,一个min heap, maxheap size = min heap size 或者
maxheap size = minheapsize + 1.
java implementation
public class Solution {
/**
* @param nums: A list of integers.
* @return: the median of numbers
*/
public int[] medianII(int[] nums) {
// write your code here
PriorityQueue pmin = new PriorityQueue ();
PriorityQueue pmax = new PriorityQueue (10, new
MaxComparator());
int i, l = nums.length;
int[] median = new int[l];
for(i = 0; i < l; i ++) {
if (pmin.size() == 0 && pmax.size() == 0) {
pmax.add(new Integer(nums[i]));
}
else {
if (nums[i] > pmax.peek().intValue()) pmin.add(new Integer(
nums[i]));
else pmax.add(new Integer(nums[i]));
if (pmax.size() < pmin.size()) {
Integer temp = pmin.poll();
pmax.add(temp);
}
else if (pmax.size() > pmin.size() + 1) {
Integer temp = pmax.poll();
pmin.add(temp);
}
else ;
}
median[i] = pmax.peek();
}
return median;
}

};
class MaxComparator implements Comparator {
@Override
public int compare(T t1, T t2) {
Integer i1 = (Integer) t1;
Integer i2 = (Integer) t2;
return -i1.compareTo(i2);
}
}

number

【在 c********g 的大作中提到】
: 原题:http://lintcode.com/en/problem/median-ii/
: Numbers keep coming, return the median of numbers at every time a new number
: added.
: Time requirement: O(nlogn)
: 谢谢!

n******n
发帖数: 12088
4
堆大小是多少?所有元素都存着?溢出怎么办?

【在 d****n 的大作中提到】
: 用两个heap.一个max heap,一个min heap, maxheap size = min heap size 或者
: maxheap size = minheapsize + 1.
: java implementation
: public class Solution {
: /**
: * @param nums: A list of integers.
: * @return: the median of numbers
: */
: public int[] medianII(int[] nums) {
: // write your code here

m*****g
发帖数: 71
5
用两个Heap,Heap要满时做table doubling,平均起来插入时间还是logN,返回min或
max时间是O(1),
或者用两个BST,插入、返回最大、最小值都是logN,可以满足速度要求,如果要加快
单纯查询时间,可以缓存min和max,插入和删除时更新一下就行了,这样查询速度是O(
1)
c********g
发帖数: 42
6
Thanks!
请教一下 pmax里的元素都是sorted的么
pmax add一个元素复杂度是多少啊?底层实现是用二分搜索么?
b**********5
发帖数: 7881
7
i think he meant what if there's no memory left to grow the heap...

O(

【在 m*****g 的大作中提到】
: 用两个Heap,Heap要满时做table doubling,平均起来插入时间还是logN,返回min或
: max时间是O(1),
: 或者用两个BST,插入、返回最大、最小值都是logN,可以满足速度要求,如果要加快
: 单纯查询时间,可以缓存min和max,插入和删除时更新一下就行了,这样查询速度是O(
: 1)

m*****n
发帖数: 2152
8
几个想法:
每个元素,要加ref count,对付重复元素多的情况。
没必要每次动态平衡,可以计算shift,来对付查询。如果O(logN)的查询也是可以接受
的吧。
如果memory装不下,写入disk,去掉写入的data,以后有必要的时候再读出来。

【在 b**********5 的大作中提到】
: i think he meant what if there's no memory left to grow the heap...
:
: O(

t******5
发帖数: 30
9
能解释一下思路么?

【在 d****n 的大作中提到】
: 用两个heap.一个max heap,一个min heap, maxheap size = min heap size 或者
: maxheap size = minheapsize + 1.
: java implementation
: public class Solution {
: /**
: * @param nums: A list of integers.
: * @return: the median of numbers
: */
: public int[] medianII(int[] nums) {
: // write your code here

a****r
发帖数: 87
10
嗯。有点不明白。如果用bst,那memory overhead不是会更大?因为BST还要保存left
and right children. Heap 一般直接用array就实现了。overhead会更小。

O(

【在 m*****g 的大作中提到】
: 用两个Heap,Heap要满时做table doubling,平均起来插入时间还是logN,返回min或
: max时间是O(1),
: 或者用两个BST,插入、返回最大、最小值都是logN,可以满足速度要求,如果要加快
: 单纯查询时间,可以缓存min和max,插入和删除时更新一下就行了,这样查询速度是O(
: 1)

n**s
发帖数: 2230
11
这题都没做过? 经典题了。要是凭空想,不容易想出来。
1 (共1页)
进入JobHunting版参与讨论
相关主题
用什么数据结构快速insert, get medianGoogle phone interview
median of K sorted arrayG家电面题目
题:无限数据流获取第k%的数Top K in N sorted array
[朋友面的G]Find k largest element in sliding window讨论一道题
问个题k sorted array merge大家现场写一个heap?
An interview question of finding the median in a moving window.G家电面的两个题
careercup书上那个maintain median value的题问两道google题
find the median of an infinite data stream of integers请教关于build heap BIG-O的问题
相关话题的讨论汇总
话题: integer话题: median话题: nums话题: heap