由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 被Facebook的面试的一道题目难倒了
相关主题
找2个sorted array中的第K小的元素,有O(lgn)方法吗?问道面试题
老问题了,网上竟然找不到答案优步面试,哎。。。
两个Sorted Array,找K smallest element请教leetcode一道题目 Median of Two Sorted Arrays
问一下deep copy和shallow copy的问题(C#)弱问,啥是median of an array?
Find the intersection of two sorted arrays【扩展】做道有序数组元素求最大和题?
请教一下external sorting的问题find median for k sorted arrays
a questionAmazon 面试题
新鲜C3 energy面经问一个问题(4)
相关话题的讨论汇总
话题: median话题: median1话题: array话题: inf话题: median2
进入JobHunting版参与讨论
1 (共1页)
f******e
发帖数: 164
1
给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
这个已经 lineal了?难道还有更快的?
y*******g
发帖数: 6599
2
电面还是onsite?

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

f******e
发帖数: 164
3
电面。

【在 y*******g 的大作中提到】
: 电面还是onsite?
I******T
发帖数: 671
4
不就是X的median加Y的median吗?

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

D******n
发帖数: 2836
5
顯然不是。。。。

【在 I******T 的大作中提到】
: 不就是X的median加Y的median吗?
f******e
发帖数: 164
6
不对吧。
X = 4,5,6
Y = 1,2,3,7
求的是4
你的X的median加Y的median = 5+2 =7

【在 I******T 的大作中提到】
: 不就是X的median加Y的median吗?
D******n
发帖数: 2836
7
可以分情況啊,
x=1,2,3,4
y=5,6,7,8
顯然就不用怎麼算

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

r****o
发帖数: 1950
8
Union是说X和Y合并后的sorted array吗?

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

Q******e
发帖数: 85
9
It can be log(m+n). I can not remember clearly. The basic idea is
suppose array1 = left1[..], median1, right1[...]
suppose array2 = left2[..], median2, right2[...]
we compare meidan1 and median 2,
if meidan1 < median 2
then array1 = right[1], median1 = find_median(array1 ); // array
array2 = left[2], median2 = find_median(array2 );
Repeat until you have two elements left. This is your median.
Maybe some details missing here.
r****o
发帖数: 1950
10
1,2,3,7的median是2还是2.5?

【在 f******e 的大作中提到】
: 不对吧。
: X = 4,5,6
: Y = 1,2,3,7
: 求的是4
: 你的X的median加Y的median = 5+2 =7

相关主题
请教一下external sorting的问题问道面试题
a question优步面试,哎。。。
新鲜C3 energy面经请教leetcode一道题目 Median of Two Sorted Arrays
进入JobHunting版参与讨论
n****n
发帖数: 104
11
for array N(1..n) and M(1..m), n > m
pick i from M (random, m/2, either way)
search i position in N, say k,
compare i+k and n+m/2, if larger, pick item in the (i+ k)/2 , if less, check
item with order of ((m-i) + (n-k))/2), the new item could be in N or M. if
new item in N, check the position in M, repeat the procedure till you find
it.
c*****e
发帖数: 210
12
可以二分法。 O(logn)时间
先假设median在X中,
比较X[p_x]和Y[size_y/2+size_x/2-p_x], 若>, 则p_x前移, 否则后移。
若X里找不到,
反过来从Y里找
y*******g
发帖数: 6599
13
嗯, 就是这个意思.

【在 Q******e 的大作中提到】
: It can be log(m+n). I can not remember clearly. The basic idea is
: suppose array1 = left1[..], median1, right1[...]
: suppose array2 = left2[..], median2, right2[...]
: we compare meidan1 and median 2,
: if meidan1 < median 2
: then array1 = right[1], median1 = find_median(array1 ); // array
: array2 = left[2], median2 = find_median(array2 );
: Repeat until you have two elements left. This is your median.
: Maybe some details missing here.

g*******y
发帖数: 1930
14
log(n+m):
比较X的中位和Y的中位,假设X大,然后可以甩掉X后半和Y前半元素
然后在剩下的m/2 + n/2个元素中用同样的方法

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

I******T
发帖数: 671
15
你把题目改成 X Union Y了。

【在 f******e 的大作中提到】
: 不对吧。
: X = 4,5,6
: Y = 1,2,3,7
: 求的是4
: 你的X的median加Y的median = 5+2 =7

M*****a
发帖数: 2054
16
找出各自的median,然后缩小搜索范围即可

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

g*******y
发帖数: 1930
17
呵呵,我回复晚了,原来前面都已经有人给了答案。
random的worst case,应该是O(n)了。比较中位数的话,每次能扔掉几乎正好一半的数。

check
if

【在 n****n 的大作中提到】
: for array N(1..n) and M(1..m), n > m
: pick i from M (random, m/2, either way)
: search i position in N, say k,
: compare i+k and n+m/2, if larger, pick item in the (i+ k)/2 , if less, check
: item with order of ((m-i) + (n-k))/2), the new item could be in N or M. if
: new item in N, check the position in M, repeat the procedure till you find
: it.

y*******g
发帖数: 6599
18
k largest也不用O(n)方法类似. log

数。

【在 g*******y 的大作中提到】
: 呵呵,我回复晚了,原来前面都已经有人给了答案。
: random的worst case,应该是O(n)了。比较中位数的话,每次能扔掉几乎正好一半的数。
:
: check
: if

f******e
发帖数: 164
19
你这个解法不对吧。如果m==n是对的,m!=n 不对了。
比方说,按照你的解法,当median1 == median2你怎么办?(不是第一个loop的)。
你用两个不等长的array做例子推演一下就会发现。

【在 Q******e 的大作中提到】
: It can be log(m+n). I can not remember clearly. The basic idea is
: suppose array1 = left1[..], median1, right1[...]
: suppose array2 = left2[..], median2, right2[...]
: we compare meidan1 and median 2,
: if meidan1 < median 2
: then array1 = right[1], median1 = find_median(array1 ); // array
: array2 = left[2], median2 = find_median(array2 );
: Repeat until you have two elements left. This is your median.
: Maybe some details missing here.

y*******g
发帖数: 6599
20
有一些细节要注意, 如果这么解的话, 要记录下drop了多少small的element
当drop了 n/2的时候停止.

【在 f******e 的大作中提到】
: 你这个解法不对吧。如果m==n是对的,m!=n 不对了。
: 比方说,按照你的解法,当median1 == median2你怎么办?(不是第一个loop的)。
: 你用两个不等长的array做例子推演一下就会发现。

相关主题
弱问,啥是median of an array?Amazon 面试题
做道有序数组元素求最大和题?问一个问题(4)
find median for k sorted arrays两个数组找duplicated有什么好办法
进入JobHunting版参与讨论
g*******y
发帖数: 1930
21
median1 == median2的时候,任务不就已经完成了吗。。。
如果定义偶数个数组的median是两个准median的平均值的话,任务到此为止。即便你定
义偶数个数数组的中位数有两个的情况,最多在加上常数的操作就ok了。

【在 f******e 的大作中提到】
: 你这个解法不对吧。如果m==n是对的,m!=n 不对了。
: 比方说,按照你的解法,当median1 == median2你怎么办?(不是第一个loop的)。
: 你用两个不等长的array做例子推演一下就会发现。

r****o
发帖数: 1950
22
弱问,请问两个数组X和Y的union是什么意思阿?
是X和Y合并后再sort的数组吗?

【在 g*******y 的大作中提到】
: median1 == median2的时候,任务不就已经完成了吗。。。
: 如果定义偶数个数组的median是两个准median的平均值的话,任务到此为止。即便你定
: 义偶数个数数组的中位数有两个的情况,最多在加上常数的操作就ok了。

M*****a
发帖数: 2054
23
任务完成的时候就是两个字段长度都为1

【在 g*******y 的大作中提到】
: median1 == median2的时候,任务不就已经完成了吗。。。
: 如果定义偶数个数组的median是两个准median的平均值的话,任务到此为止。即便你定
: 义偶数个数数组的中位数有两个的情况,最多在加上常数的操作就ok了。

y*******g
发帖数: 6599
24
加起来<=3就可以了吧?

【在 M*****a 的大作中提到】
: 任务完成的时候就是两个字段长度都为1
r*****n
发帖数: 120
25
2.5

【在 r****o 的大作中提到】
: 1,2,3,7的median是2还是2.5?
i**S
发帖数: 105
26
我觉得你说得对。

【在 c*****e 的大作中提到】
: 可以二分法。 O(logn)时间
: 先假设median在X中,
: 比较X[p_x]和Y[size_y/2+size_x/2-p_x], 若>, 则p_x前移, 否则后移。
: 若X里找不到,
: 反过来从Y里找

s*********l
发帖数: 103
27
http://fayaa.com/tiku/view/114/
http://blog.csdn.net/hhygcy/archive/2009/09/23/4584064.aspx

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

m*********y
发帖数: 127
28
能不能告诉我 facebook的猎头的email
谢谢了

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

y*******g
发帖数: 6599
29
你不是面过么?

【在 m*********y 的大作中提到】
: 能不能告诉我 facebook的猎头的email
: 谢谢了
:
: 不满意。

l**********d
发帖数: 19
30
第几轮?电面还是onsite?

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

相关主题
问道amazon 面试题老问题了,网上竟然找不到答案
攒RP,ZocDoc 面经两个Sorted Array,找K smallest element
找2个sorted array中的第K小的元素,有O(lgn)方法吗?问一下deep copy和shallow copy的问题(C#)
进入JobHunting版参与讨论
z********y
发帖数: 109
31
log(max(m, n))

【在 g*******y 的大作中提到】
: log(n+m):
: 比较X的中位和Y的中位,假设X大,然后可以甩掉X后半和Y前半元素
: 然后在剩下的m/2 + n/2个元素中用同样的方法
:
: 不满意。

l***8
发帖数: 149
32
O(log(m+n)) and O(log(max(m,n))) are asymptotically the same thing

【在 z********y 的大作中提到】
: log(max(m, n))
c****l
发帖数: 138
33
I have a question: since the question asks for the median of X U Y, what if
X and Y have some elements in common? The number of common elemements can be
from 0 to min(m, n), right? Thanks.
a****n
发帖数: 1887
34
在两个数组上用binary search
if arry1mid < array2mid, 去掉前arry1前一半, array2 后一半
else 去掉arry1 后一半,array2 前一半
z***e
发帖数: 5393
35
search和sort是两个不同的目的,题目只是要你search,你上来就说我要merge sort,
那就已经完全不对,当然不满意。

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

r*******n
发帖数: 3020
36
我们不能冲动地把[A[0],A[n/2])和[B[m/2],B[m]]全部扔掉
这个是为什么?
S******n
发帖数: 1009
37
if m>>n, then, the median which should be in B will be removed after several
cuts

【在 r*******n 的大作中提到】
: 我们不能冲动地把[A[0],A[n/2])和[B[m/2],B[m]]全部扔掉
: 这个是为什么?

E*******0
发帖数: 465
38
log(m+n)
S******A
发帖数: 1002
39
其实核心是每次两边甩掉的数目要保证相同
我觉得如果两个ARRAY 大小不一样,paddle是最简单的方法

【在 r*******n 的大作中提到】
: 我们不能冲动地把[A[0],A[n/2])和[B[m/2],B[m]]全部扔掉
: 这个是为什么?

p******n
发帖数: 156
40
这个方法怎么work的?
譬如,给两个array:
1 2 3 4 5 6 7 8 9 10 11
123
????

【在 Q******e 的大作中提到】
: It can be log(m+n). I can not remember clearly. The basic idea is
: suppose array1 = left1[..], median1, right1[...]
: suppose array2 = left2[..], median2, right2[...]
: we compare meidan1 and median 2,
: if meidan1 < median 2
: then array1 = right[1], median1 = find_median(array1 ); // array
: array2 = left[2], median2 = find_median(array2 );
: Repeat until you have two elements left. This is your median.
: Maybe some details missing here.

相关主题
问一下deep copy和shallow copy的问题(C#)a question
Find the intersection of two sorted arrays【扩展】新鲜C3 energy面经
请教一下external sorting的问题问道面试题
进入JobHunting版参与讨论
c**********e
发帖数: 2007
41

What is paddle? Detail?

【在 S******A 的大作中提到】
: 其实核心是每次两边甩掉的数目要保证相同
: 我觉得如果两个ARRAY 大小不一样,paddle是最简单的方法

n******h
发帖数: 50
42
美女,
if (median1 == median2)
不如
return median1;

【在 f******e 的大作中提到】
: 你这个解法不对吧。如果m==n是对的,m!=n 不对了。
: 比方说,按照你的解法,当median1 == median2你怎么办?(不是第一个loop的)。
: 你用两个不等长的array做例子推演一下就会发现。

y******0
发帖数: 64
43
ls都是CS的?
p********7
发帖数: 549
p********7
发帖数: 549
45
找到X的median和y的,然后比较之后再找,简单很多

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

a****l
发帖数: 8211
46
array中找median就不算时间了?

【在 Q******e 的大作中提到】
: It can be log(m+n). I can not remember clearly. The basic idea is
: suppose array1 = left1[..], median1, right1[...]
: suppose array2 = left2[..], median2, right2[...]
: we compare meidan1 and median 2,
: if meidan1 < median 2
: then array1 = right[1], median1 = find_median(array1 ); // array
: array2 = left[2], median2 = find_median(array2 );
: Repeat until you have two elements left. This is your median.
: Maybe some details missing here.

l******t
发帖数: 12659
47
求median,不就是求中间数吗?
既然X, Y都是sorted的了,
很容易得到最小值和最大值啊
d****e
发帖数: 251
48
这解法是错的。

【在 Q******e 的大作中提到】
: It can be log(m+n). I can not remember clearly. The basic idea is
: suppose array1 = left1[..], median1, right1[...]
: suppose array2 = left2[..], median2, right2[...]
: we compare meidan1 and median 2,
: if meidan1 < median 2
: then array1 = right[1], median1 = find_median(array1 ); // array
: array2 = left[2], median2 = find_median(array2 );
: Repeat until you have two elements left. This is your median.
: Maybe some details missing here.

d****e
发帖数: 251
49
正解。你是说padding? 譬如n < m, 直接将数组一扩充到和数组二一样?
或者每次甩min(n/2, m/2), where n, m are remaining array length.
同时可快速解决一些特例:
if median1 == median2:
return median1
else if median1 < median2:
if arr1[-1] < arr2[0]:
very simple math here.
复杂的就是数组重叠部分,不过应该很快。

【在 S******A 的大作中提到】
: 其实核心是每次两边甩掉的数目要保证相同
: 我觉得如果两个ARRAY 大小不一样,paddle是最简单的方法

d****e
发帖数: 251
50
因为已经sorted, 不用算时间了。

【在 a****l 的大作中提到】
: array中找median就不算时间了?
相关主题
优步面试,哎。。。做道有序数组元素求最大和题?
请教leetcode一道题目 Median of Two Sorted Arraysfind median for k sorted arrays
弱问,啥是median of an array?Amazon 面试题
进入JobHunting版参与讨论
i*o
发帖数: 149
51
Median is not average.
constant time O(1) for sorted array.

【在 a****l 的大作中提到】
: array中找median就不算时间了?
f**********r
发帖数: 2137
52
这种问题,复杂度肯定是log的,至于解法再慢慢想
x****r
发帖数: 99
53
恩,我也觉得padding是个好方法,不然很难搞
如果用一次扔一半那种方法如果碰到
a1 = 10,20,30,40,50
a2 = 45
不知道怎么才可以排除
如果用padding,在a2里面填上2个-1000和2个1000就可以继续做了
不过如果两个数组相差是奇数,怎么填充呢,因为不能两边加上一样的个数
比如
a1 = 1 2 3 4 5 6
a2 = 3
这种情况下median肯定是存在的一个数而不是两个数的平均值,倒是可以用前面一个人
讲过的,现
在a1里面binary search找不到再去a2找,肯定能找到

【在 S******A 的大作中提到】
: 其实核心是每次两边甩掉的数目要保证相同
: 我觉得如果两个ARRAY 大小不一样,paddle是最简单的方法

c***p
发帖数: 221
54
A detailed solution
http://ocw.mit.edu/NR/rdonlyres/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/30C68118-E436-4FE3-8C79-6BAFBB07D935/0/ps9sol.pdf
两种办法:
1. suppose an element in one array, use binary search to find the median; if
not find, repeat the same search on the other array
2. remove half elements by comparing median of the two array

不满意。

【在 f******e 的大作中提到】
: 给定 X[1..n] and Y[1..m] 两个 arrays,已经sort好了.
: 如何找到X Y的median?我说用merge sort,要O(m+n/2)时间。面试官明显不满意。
: 这个已经 lineal了?难道还有更快的?

f*****8
发帖数: 5996
55
.哈哈. 面试"官"
y**i
发帖数: 1112
56

两个数组相差是奇数一样可以填充
比如你的例子
a1 = 1 2 3 4 5 6
a2 = 3
可以把a2写成-Inf -Inf 3 Inf Inf Inf,(这里用Inf表示无穷大,整数的上限)
那么同样的方法(比较中位数扔掉一半)最后得到两个中位数取小的(因为多加了一个
Inf在右边)
如果把a2写成-Inf -Inf -Inf 3 Inf Inf,那么最后得到两个中位数取大的(因为多加
了一个-Inf在左边)
不过对于第二种方法,对这个例子比较特殊,没有等到最后得到两个中位数的时候已经
遇到了a1的中位数3等于a2的中位数3了,所以直接就返回3了
换另一个例子:a1 = 1 2 3 4 5 6 7 8, a2 = 0, 第一种方法返回4和5中的4,第二种
方法返回3和4中的4。

【在 x****r 的大作中提到】
: 恩,我也觉得padding是个好方法,不然很难搞
: 如果用一次扔一半那种方法如果碰到
: a1 = 10,20,30,40,50
: a2 = 45
: 不知道怎么才可以排除
: 如果用padding,在a2里面填上2个-1000和2个1000就可以继续做了
: 不过如果两个数组相差是奇数,怎么填充呢,因为不能两边加上一样的个数
: 比如
: a1 = 1 2 3 4 5 6
: a2 = 3

W***i
发帖数: 9134
57
如果 1 2 3 4 5 6 7 8 median是几啊?4和5都算?
t******e
发帖数: 1293
58
4/5分别是下/上median

【在 W***i 的大作中提到】
: 如果 1 2 3 4 5 6 7 8 median是几啊?4和5都算?
1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个问题(4)Find the intersection of two sorted arrays【扩展】
两个数组找duplicated有什么好办法请教一下external sorting的问题
问道amazon 面试题a question
攒RP,ZocDoc 面经新鲜C3 energy面经
找2个sorted array中的第K小的元素,有O(lgn)方法吗?问道面试题
老问题了,网上竟然找不到答案优步面试,哎。。。
两个Sorted Array,找K smallest element请教leetcode一道题目 Median of Two Sorted Arrays
问一下deep copy和shallow copy的问题(C#)弱问,啥是median of an array?
相关话题的讨论汇总
话题: median话题: median1话题: array话题: inf话题: median2