由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问道算法题
相关主题
算法--找一个unsorted array的largest and second largest 最Groupon 電面
Leetcode Kth largestfind Kth Largest Element 有没有更简化的解法
The time complexity on finding the kth largest element in a一个算法题:Selecting median of three sorted arrays
要去google onsite的同学们讨论个常见的面试题:一个数据流里面随时找出median
Quick selection for k unsorted arrays不明白“整数流的中位数”为啥用max heap和min heap比binary sort 好
找median有O(N)的算法吗?求推荐学习recursive 算法的资料
跟人聊了一道题,怎么做最优。Google phone interview
Find the K largest element in a sorted M*N array问个题
相关话题的讨论汇总
话题: s1话题: arr话题: e1话题: kth话题: int
进入JobHunting版参与讨论
1 (共1页)
p*****i
发帖数: 197
1
题目是:
How to find the kth largest element in an unsorted array of length n in O(n)
?
s******n
发帖数: 3946
2
use a heap of size k
p*****i
发帖数: 197
3
大哥 能不能具体点?

【在 s******n 的大作中提到】
: use a heap of size k
H*****1
发帖数: 4815
4
o(n ln k)
maintain a heap of size k

n)

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

s*******8
发帖数: 12734
5
if k is fixed
ln k = constant

【在 H*****1 的大作中提到】
: o(n ln k)
: maintain a heap of size k
:
: n)

H*****1
发帖数: 4815
6
用前k个数做一个min heap
扫描剩下的数,如果比heap的根节点小就算了,如果大,就加到heap里,同时把heap的
根节点去掉
最后返回heap的根节点

【在 p*****i 的大作中提到】
: 大哥 能不能具体点?
p*****i
发帖数: 197
7
谢谢帮忙,小弟懂了,哈哈

【在 H*****1 的大作中提到】
: 用前k个数做一个min heap
: 扫描剩下的数,如果比heap的根节点小就算了,如果大,就加到heap里,同时把heap的
: 根节点去掉
: 最后返回heap的根节点

y*****n
发帖数: 243
8
....heap得有lgk的插入吧。。。k也不是常量啊。k为n不就是lgln了么。
c*****5
发帖数: 25
9
Isn't this order statistic problem? Recursive selection based on random-
partition will get the kth element in theta(n) time.

题目是:How to find the kth largest element in an unsorted array of length n
in O(n)?
★ Sent from iPhone App: iReader Mitbbs 7.39 - iPad Lite

【在 p*****i 的大作中提到】
: 谢谢帮忙,小弟懂了,哈哈
C***U
发帖数: 2406
10
算法导论里有详细算法
用recursion
对任何k都可以。

n)

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

相关主题
找median有O(N)的算法吗?Groupon 電面
跟人聊了一道题,怎么做最优。find Kth Largest Element 有没有更简化的解法
Find the K largest element in a sorted M*N array一个算法题:Selecting median of three sorted arrays
进入JobHunting版参与讨论
f*******n
发帖数: 12623
11
This is the famous linear-time selection algorithm. It is very
complicated. They won't expect you to tell exactly how it works; just that you know about it.
http://en.wikipedia.org/wiki/Selection_algorithm#Linear_general

n)

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

w**z
发帖数: 8232
12
It's like the quick sort, pick the pivot. But to handle worst case for
picking the pivot , you need to have the "median of median" thing.

you know about it.

【在 f*******n 的大作中提到】
: This is the famous linear-time selection algorithm. It is very
: complicated. They won't expect you to tell exactly how it works; just that you know about it.
: http://en.wikipedia.org/wiki/Selection_algorithm#Linear_general
:
: n)

i******r
发帖数: 793
13
经典算法,搜一下就知道
ls说得很清楚
要让时间接近线性,可以多选几个pivot,然后取中值
w****o
发帖数: 2260
14
这个有点儿overkill,你得到的其实是最大的k个数,有点儿任务完成的太充裕了。
版主想要的是第k大的数,要求O(n)

【在 H*****1 的大作中提到】
: 用前k个数做一个min heap
: 扫描剩下的数,如果比heap的根节点小就算了,如果大,就加到heap里,同时把heap的
: 根节点去掉
: 最后返回heap的根节点

s****e
发帖数: 638
15
试试
int findKth(int* arr, int start, int end, int k, int last) {
if (start == end) return start;
int s1 = start;
int e1 = end;
int mid = arr[(e1+s1)/2];

while(s1 < e1) {
while(arr[s1] < mid) s1 ++;
while(arr[e1] > mid) e1 --;
if (s1 <= e1) {
int temp = arr[s1];
arr[s1] = arr[e1];
arr[e1] = temp;
s1++;
e1--;
}
}
if (last-s1 >= k) return findKth(arr, s1, end, k, last);
else return findKth(arr, start, s1-1, k, last);
}

n)

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

h**********d
发帖数: 4313
16
如果k不大的话,可以维护k个变量,然后线性扫描一遍数组,同时update这k个变量就
完了

n)
★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

l***i
发帖数: 1309
17
1. you can find median in O(n) time
2. if k else throw away lower half
and you end up with n + n/2 + ... + 1 = O(n)
w****o
发帖数: 2260
18
你正好说反了,他说的是kth largest, 你的解法是kth smallest

【在 l***i 的大作中提到】
: 1. you can find median in O(n) time
: 2. if k: else throw away lower half
: and you end up with n + n/2 + ... + 1 = O(n)

m******6
发帖数: 82
19
partition/2?

n)

【在 p*****i 的大作中提到】
: 题目是:
: How to find the kth largest element in an unsorted array of length n in O(n)
: ?

1 (共1页)
进入JobHunting版参与讨论
相关主题
问个题Quick selection for k unsorted arrays
An interview question of finding the median in a moving window.找median有O(N)的算法吗?
把问题简化吧,找2个sorted array的median跟人聊了一道题,怎么做最优。
median of two sorted arrays的时间复杂度(附上了过了oj的代码)Find the K largest element in a sorted M*N array
算法--找一个unsorted array的largest and second largest 最Groupon 電面
Leetcode Kth largestfind Kth Largest Element 有没有更简化的解法
The time complexity on finding the kth largest element in a一个算法题:Selecting median of three sorted arrays
要去google onsite的同学们讨论个常见的面试题:一个数据流里面随时找出median
相关话题的讨论汇总
话题: s1话题: arr话题: e1话题: kth话题: int