由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 说一题恶心题怎么用nlog n来解。
相关主题
google老题:Find kth largest of sum of elements in 2 sorted arraySuffix Array nlogn的构造是怎么样的?
Google onsite一题判断一个string是否是某个pattern的周期循环
周末出道题关于2D, 3D平面上点的问题?
问个题一题貌似在AMAZON和MICROSOFT都出现过的题目。
微软一个面试题G 家的题目 讨论
有疑问的一题n个排序链表,如何O(1) space合并成一个
MS一道onsite面题 白板coding被狗家店面据的莫名其妙,发个面经吧
问个算法题, 关于区间 overlap的问EPI一题
相关话题的讨论汇总
话题: sqrt话题: 3n话题: nlog话题: median话题: log
进入JobHunting版参与讨论
1 (共1页)
h********e
发帖数: 1972
1
一般面试不会见到这种东西的。权当娱乐吧。
P1:两个sorted数组,每个数组选一个数,相加。求第k大的和。
P2:一个n*n的矩阵,行和列都是sorted的,求第k大数。假设是从左到右递增,从上到
下递增。
P1是P2的特例。
这个题目O(n^2)是最直接的解法。然后有个O(k logn)的用堆来做,稍微tricky一些。
下面说下n logn的怎么搞出来。
首先想到的是套median的算法。比如一开始拿矩阵中心的那个数,say q 出来。从右上
开始往左下 能用O(n)的时间找出一条分界线, 这条分界线是单调的。使得这条线以上
的数比q小,下的数比q大。然后扔掉不对的那一半递归。第一次这么扔能扔掉至少1/4
的矩阵。问题来了,第二次继续在剩下的里面怎么做。
剩下的是神马。。是n 个row。每个row大小都不一样。目标是在这堆row里面扔掉至少1
/4. 这时候,每个row 可以找出一个median来。然后一般的做法找medians的median。
但是在这里行不通,因为有的row size比较小,这么做不能保证每次扔掉1/4. 必须修
正算法。要找weighted median。这个weight就是row size。这个weighted median 在
线性时间很容易搞,标准算法。可以用反证法很容易证明如果用weighted median 那么
在所有的row 中间至少有1/4的数比他大,1/4的数比他小。 这样就能保证每次扔掉1/4
. 扔的时候,也只要线性时间完成,因为又是一遍从右上到左下的查找。
最后的时间是:T(N) = O(\sqrt(N)) + T(3N/4) =O( nlog n). N=n^2.
这题还有个O(n)时间的解法。。没事就别去想了。。。这个nlogn的算法,如果熟悉
median的话,还是有机会搞出来。
n*s
发帖数: 752
2
which company is this?
h********e
发帖数: 1972
3
google onsite
i**********e
发帖数: 1145
4
这题我记得有论文说 O(n) 可以解,但是算法非常复杂。
用堆 O(k log n) 就应该可以了。
请问 O(n log n) 有比 O(k log n) 快一些吗?
f*******n
发帖数: 12623
5
你弄错了什么东西。如果T(N) = O(\sqrt(N)) + T(3N/4) ,那T(N) = O(\sqrt(N))。
证明:O(\sqrt(N)) + T(3N/4) = O(\sqrt(N)) + O(\sqrt(3N/4)) = O(\sqrt(N)) +
\sqrt(3/4)O(\sqrt(N)) = O(\sqrt(N)) = T(N)
h********e
发帖数: 1972
6
k 可以是n^2... nlogn 这里的n就是矩阵的边长。 klogn有可能比直接做还慢。。

【在 i**********e 的大作中提到】
: 这题我记得有论文说 O(n) 可以解,但是算法非常复杂。
: 用堆 O(k log n) 就应该可以了。
: 请问 O(n log n) 有比 O(k log n) 快一些吗?

h********e
发帖数: 1972
7
你再算一遍。。。



【在 f*******n 的大作中提到】
: 你弄错了什么东西。如果T(N) = O(\sqrt(N)) + T(3N/4) ,那T(N) = O(\sqrt(N))。
: 证明:O(\sqrt(N)) + T(3N/4) = O(\sqrt(N)) + O(\sqrt(3N/4)) = O(\sqrt(N)) +
: \sqrt(3/4)O(\sqrt(N)) = O(\sqrt(N)) = T(N)

b******v
发帖数: 1493
8
T(N) = O(\sqrt(N)) + T(3N/4) =O( nlog n). N=n^2
那么T(N)=O(N^(log_4 3()=O(n^(log_2 3)) 比nlog(n)大。

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

【在 h********e 的大作中提到】
: 一般面试不会见到这种东西的。权当娱乐吧。
: P1:两个sorted数组,每个数组选一个数,相加。求第k大的和。
: P2:一个n*n的矩阵,行和列都是sorted的,求第k大数。假设是从左到右递增,从上到
: 下递增。
: P1是P2的特例。
: 这个题目O(n^2)是最直接的解法。然后有个O(k logn)的用堆来做,稍微tricky一些。
: 下面说下n logn的怎么搞出来。
: 首先想到的是套median的算法。比如一开始拿矩阵中心的那个数,say q 出来。从右上
: 开始往左下 能用O(n)的时间找出一条分界线, 这条分界线是单调的。使得这条线以上
: 的数比q小,下的数比q大。然后扔掉不对的那一半递归。第一次这么扔能扔掉至少1/4

h********e
发帖数: 1972
9
我还是写出来吧。。。T(N) = sqrt(N) + T(3N/4) = sqrt(N) + sqrt(3N/4) + T(9N/
16) = ... = sqrt(N)+sqrt(3N/4)+sqrt(9N/16)+sqrt(3^3 N/4^3) ... = 一共重复log
_{4/3} N次。。所以最后是O(nlog n)...
i****s
发帖数: 1152
10
基本上都是median of median的变种
理论上是O(N)

4

【在 h********e 的大作中提到】
: 一般面试不会见到这种东西的。权当娱乐吧。
: P1:两个sorted数组,每个数组选一个数,相加。求第k大的和。
: P2:一个n*n的矩阵,行和列都是sorted的,求第k大数。假设是从左到右递增,从上到
: 下递增。
: P1是P2的特例。
: 这个题目O(n^2)是最直接的解法。然后有个O(k logn)的用堆来做,稍微tricky一些。
: 下面说下n logn的怎么搞出来。
: 首先想到的是套median的算法。比如一开始拿矩阵中心的那个数,say q 出来。从右上
: 开始往左下 能用O(n)的时间找出一条分界线, 这条分界线是单调的。使得这条线以上
: 的数比q小,下的数比q大。然后扔掉不对的那一半递归。第一次这么扔能扔掉至少1/4

f*******n
发帖数: 12623
11
sqrt(N)+sqrt(3N/4)+sqrt(9N/16)+sqrt(3^3 N/4^3) = sqrt(N) * (1+sqrt(3/4)+sqrt
(3/4)^2+sqrt(3/4)^3+...)
1+sqrt(3/4)+sqrt(3/4)^2+sqrt(3/4)^3+...是geometric series。一直加起来=1/(1-
sqrt(3/4)),是一个constant。所以是sqrt(N) * O(1) = O(sqrt(N))

log

【在 h********e 的大作中提到】
: 我还是写出来吧。。。T(N) = sqrt(N) + T(3N/4) = sqrt(N) + sqrt(3N/4) + T(9N/
: 16) = ... = sqrt(N)+sqrt(3N/4)+sqrt(9N/16)+sqrt(3^3 N/4^3) ... = 一共重复log
: _{4/3} N次。。所以最后是O(nlog n)...

h********e
发帖数: 1972
12
唔那我递归方程写错了,本意是。。应该是T(N) = O(n) + T(3N/4) 不好意思。。
f*******n
发帖数: 12623
13
那T(N) = O(n)

【在 h********e 的大作中提到】
: 唔那我递归方程写错了,本意是。。应该是T(N) = O(n) + T(3N/4) 不好意思。。
1 (共1页)
进入JobHunting版参与讨论
相关主题
问EPI一题微软一个面试题
没刷过题的伤不起啊有疑问的一题
每次刷题都有新发现MS一道onsite面题 白板coding
每日一题之毛毛虫和叶子问个算法题, 关于区间 overlap的
google老题:Find kth largest of sum of elements in 2 sorted arraySuffix Array nlogn的构造是怎么样的?
Google onsite一题判断一个string是否是某个pattern的周期循环
周末出道题关于2D, 3D平面上点的问题?
问个题一题貌似在AMAZON和MICROSOFT都出现过的题目。
相关话题的讨论汇总
话题: sqrt话题: 3n话题: nlog话题: median话题: log