由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一道热门的 Google 面试题 (转载)
相关主题
请大虾验证!一个java class downcast 的问题
一道Microsoft的面试题又一道面试题,我是不是想多了?
嵌入式系统用什么sorting算法比较好?关于在rotated sorted array中查找的问题
请问如何把初始化一个const 的vector (or array) in a class?为什么不能成功排序
有谁看过youtube上的算法课吗?讨论几个面试题
关于二维矩阵的C的问题Partitioning (转载)
搞个pandas需要啥数学?如何将若干已升序排序好的数组合并在一起,并仍然是升序?
我写的quick sortRe: amazon onsite interview question (转载)
相关话题的讨论汇总
话题: 矩阵话题: findmax话题: google话题: return话题: find
进入Programming版参与讨论
1 (共1页)
i**********e
发帖数: 1145
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: ihasleetcode (1337coder), 信区: JobHunting
标 题: 一道热门的 Google 面试题
发信站: BBS 未名空间站 (Thu Jan 27 21:06:18 2011, 美东)
最近非常热门的一道 google 题,大家讨论讨论.
Two reverse sorted arrays A and B have been given.
such that size of A is m and size of B is n
You need to find the k th largest sum (a+b) where a is taken from A and b is
taken from B. such that k < m*n
本版又讨论过,但是好像没什么结果。
http://www.mitbbs.com/article_t/JobHunting/31684697.html
这题其实可以转换成另外以下的题目(杨式矩阵):
Given a N*N Matrix.
All rows are sorted, and all columns are sorted.
Find the Kth Largest element of the matrix.
我想到一个利用堆的解法,可以达到 O(k log min(m, n)).
但看网上 google 要求的最优解法好像是 O(n).
不知道各位大侠有没有任何好的思路.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
z****e
发帖数: 2024
2
你说得那个样式矩阵的题是O(n).因为不是sum的kth,而是矩阵元素的kth。也不用什么
算法,拐几个弯一直找到底就行了。
但是那个sum(a,b)如何O(n)?
g**e
发帖数: 6127
3
search 是拐弯找吧,找矩阵kth怎么拐弯找?
这个sum(a,b)就可以转换成杨氏矩阵,特殊的地方在于行与行,列与列直接的差是固定
的,
如果没这个特殊条件,应该不可能O(n)

【在 z****e 的大作中提到】
: 你说得那个样式矩阵的题是O(n).因为不是sum的kth,而是矩阵元素的kth。也不用什么
: 算法,拐几个弯一直找到底就行了。
: 但是那个sum(a,b)如何O(n)?

z****e
发帖数: 2024
4
k如果不算const的话,是不能O(n).
Ytable的extract-min操作本身就是线性。

【在 g**e 的大作中提到】
: search 是拐弯找吧,找矩阵kth怎么拐弯找?
: 这个sum(a,b)就可以转换成杨氏矩阵,特殊的地方在于行与行,列与列直接的差是固定
: 的,
: 如果没这个特殊条件,应该不可能O(n)

g**e
发帖数: 6127
5
k=m*n吧,不能算线性。如果extract min k次,复杂度是o(k(m+n))吧
但是这是个特殊的杨氏矩阵,但是想不出来该怎么利用。

【在 z****e 的大作中提到】
: k如果不算const的话,是不能O(n).
: Ytable的extract-min操作本身就是线性。

g*********s
发帖数: 1782
6
怎么转换成杨矩的?

【在 g**e 的大作中提到】
: k=m*n吧,不能算线性。如果extract min k次,复杂度是o(k(m+n))吧
: 但是这是个特殊的杨氏矩阵,但是想不出来该怎么利用。

z****e
发帖数: 2024
7
sum(a,b)就是。

【在 g*********s 的大作中提到】
: 怎么转换成杨矩的?
g*********s
发帖数: 1782
8
那这个转换过程不就是M*N吗?

【在 z****e 的大作中提到】
: sum(a,b)就是。
z****e
发帖数: 2024
9
不需要都算出来的。lazyevaluation。

【在 g*********s 的大作中提到】
: 那这个转换过程不就是M*N吗?
h********e
发帖数: 1972
10
这题是能O(n)的。。但我能想到的是一片80年代的stoc paper,。前面提到这个sum用
矩阵表示,就是个行单调和列单调矩阵。这种矩阵里面找第k大数能用线性时间i.e., O
(矩阵变长的和)。算法我记得是个分治。很tricky。证明大概有5页。5年前国内有个
google的人拿这个矩阵而不是sum的题目来问我,叫我给他个简单解法做答案,我知道
那片论文,比较无语,跟他说没法做。。那个拐几个弯的方法,是求矩阵里面是否存在
一个数k,而不是求第k大。
显然google要的不是这种解,,,我们现在从两个数组得到的矩阵比单调矩阵来的更多
信息。努力想想应该有比较容易的方法做出来。
相关主题
关于二维矩阵的C的问题一个java class downcast 的问题
搞个pandas需要啥数学?又一道面试题,我是不是想多了?
我写的quick sort关于在rotated sorted array中查找的问题
进入Programming版参与讨论
Y**r
发帖数: 88
11
// my pseudo code
// recursively find k
// A, B are the two arrays
MaxPair findMax(int k)
{
if (k==1) return {0, 0};
{x, y} = findMax(k-1);
if (A[x] + B[y+1]) < (A[x+1] + B[y])
{
return {x+1, y};
}
else
{
return {x, y+1};
}
}
i**********e
发帖数: 1145
12
【 以下文字转载自 JobHunting 讨论区 】
发信人: ihasleetcode (1337coder), 信区: JobHunting
标 题: 一道热门的 Google 面试题
发信站: BBS 未名空间站 (Thu Jan 27 21:06:18 2011, 美东)
最近非常热门的一道 google 题,大家讨论讨论.
Two reverse sorted arrays A and B have been given.
such that size of A is m and size of B is n
You need to find the k th largest sum (a+b) where a is taken from A and b is
taken from B. such that k < m*n
本版又讨论过,但是好像没什么结果。
http://www.mitbbs.com/article_t/JobHunting/31684697.html
这题其实可以转换成另外以下的题目(杨式矩阵):
Given a N*N Matrix.
All rows are sorted, and all columns are sorted.
Find the Kth Largest element of the matrix.
我想到一个利用堆的解法,可以达到 O(k log min(m, n)).
但看网上 google 要求的最优解法好像是 O(n).
不知道各位大侠有没有任何好的思路.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
z****e
发帖数: 2024
13
你说得那个样式矩阵的题是O(n).因为不是sum的kth,而是矩阵元素的kth。也不用什么
算法,拐几个弯一直找到底就行了。
但是那个sum(a,b)如何O(n)?
g**e
发帖数: 6127
14
search 是拐弯找吧,找矩阵kth怎么拐弯找?
这个sum(a,b)就可以转换成杨氏矩阵,特殊的地方在于行与行,列与列直接的差是固定
的,
如果没这个特殊条件,应该不可能O(n)

【在 z****e 的大作中提到】
: 你说得那个样式矩阵的题是O(n).因为不是sum的kth,而是矩阵元素的kth。也不用什么
: 算法,拐几个弯一直找到底就行了。
: 但是那个sum(a,b)如何O(n)?

z****e
发帖数: 2024
15
k如果不算const的话,是不能O(n).
Ytable的extract-min操作本身就是线性。

【在 g**e 的大作中提到】
: search 是拐弯找吧,找矩阵kth怎么拐弯找?
: 这个sum(a,b)就可以转换成杨氏矩阵,特殊的地方在于行与行,列与列直接的差是固定
: 的,
: 如果没这个特殊条件,应该不可能O(n)

g**e
发帖数: 6127
16
k=m*n吧,不能算线性。如果extract min k次,复杂度是o(k(m+n))吧
但是这是个特殊的杨氏矩阵,但是想不出来该怎么利用。

【在 z****e 的大作中提到】
: k如果不算const的话,是不能O(n).
: Ytable的extract-min操作本身就是线性。

g*********s
发帖数: 1782
17
怎么转换成杨矩的?

【在 g**e 的大作中提到】
: k=m*n吧,不能算线性。如果extract min k次,复杂度是o(k(m+n))吧
: 但是这是个特殊的杨氏矩阵,但是想不出来该怎么利用。

z****e
发帖数: 2024
18
sum(a,b)就是。

【在 g*********s 的大作中提到】
: 怎么转换成杨矩的?
g*********s
发帖数: 1782
19
那这个转换过程不就是M*N吗?

【在 z****e 的大作中提到】
: sum(a,b)就是。
z****e
发帖数: 2024
20
不需要都算出来的。lazyevaluation。

【在 g*********s 的大作中提到】
: 那这个转换过程不就是M*N吗?
相关主题
为什么不能成功排序如何将若干已升序排序好的数组合并在一起,并仍然是升序?
讨论几个面试题Re: amazon onsite interview question (转载)
Partitioning (转载)问个面试题目
进入Programming版参与讨论
h********e
发帖数: 1972
21
这题是能O(n)的。。但我能想到的是一片80年代的stoc paper,。前面提到这个sum用
矩阵表示,就是个行单调和列单调矩阵。这种矩阵里面找第k大数能用线性时间i.e., O
(矩阵变长的和)。算法我记得是个分治。很tricky。证明大概有5页。5年前国内有个
google的人拿这个矩阵而不是sum的题目来问我,叫我给他个简单解法做答案,我知道
那片论文,比较无语,跟他说没法做。。那个拐几个弯的方法,是求矩阵里面是否存在
一个数k,而不是求第k大。
显然google要的不是这种解,,,我们现在从两个数组得到的矩阵比单调矩阵来的更多
信息。努力想想应该有比较容易的方法做出来。
Y**r
发帖数: 88
22
// my pseudo code
// recursively find k
// A, B are the two arrays
MaxPair findMax(int k)
{
if (k==1) return {0, 0};
{x, y} = findMax(k-1);
if (A[x] + B[y+1]) < (A[x+1] + B[y])
{
return {x+1, y};
}
else
{
return {x, y+1};
}
}
g***l
发帖数: 2753
23
google这是在找数学家吗?

O

【在 h********e 的大作中提到】
: 这题是能O(n)的。。但我能想到的是一片80年代的stoc paper,。前面提到这个sum用
: 矩阵表示,就是个行单调和列单调矩阵。这种矩阵里面找第k大数能用线性时间i.e., O
: (矩阵变长的和)。算法我记得是个分治。很tricky。证明大概有5页。5年前国内有个
: google的人拿这个矩阵而不是sum的题目来问我,叫我给他个简单解法做答案,我知道
: 那片论文,比较无语,跟他说没法做。。那个拐几个弯的方法,是求矩阵里面是否存在
: 一个数k,而不是求第k大。
: 显然google要的不是这种解,,,我们现在从两个数组得到的矩阵比单调矩阵来的更多
: 信息。努力想想应该有比较容易的方法做出来。

p*********t
发帖数: 2690
24
google的博士很多。

【在 g***l 的大作中提到】
: google这是在找数学家吗?
:
: O

s*****9
发帖数: 93
25
搜了一下有人说是这篇文章:
http://epubs.siam.org/action/showAbstract?page=14&volume=13&iss

O

【在 h********e 的大作中提到】
: 这题是能O(n)的。。但我能想到的是一片80年代的stoc paper,。前面提到这个sum用
: 矩阵表示,就是个行单调和列单调矩阵。这种矩阵里面找第k大数能用线性时间i.e., O
: (矩阵变长的和)。算法我记得是个分治。很tricky。证明大概有5页。5年前国内有个
: google的人拿这个矩阵而不是sum的题目来问我,叫我给他个简单解法做答案,我知道
: 那片论文,比较无语,跟他说没法做。。那个拐几个弯的方法,是求矩阵里面是否存在
: 一个数k,而不是求第k大。
: 显然google要的不是这种解,,,我们现在从两个数组得到的矩阵比单调矩阵来的更多
: 信息。努力想想应该有比较容易的方法做出来。

s*****9
发帖数: 93
26
我感觉用堆的方法也许就是log(n)的,但是不知道如何能分析证明。
因为感觉堆的size可以始终维持的比较小,入堆和出堆的速率可能用amortized的分析
是大体持平的。

is

【在 i**********e 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: ihasleetcode (1337coder), 信区: JobHunting
: 标 题: 一道热门的 Google 面试题
: 发信站: BBS 未名空间站 (Thu Jan 27 21:06:18 2011, 美东)
: 最近非常热门的一道 google 题,大家讨论讨论.
: Two reverse sorted arrays A and B have been given.
: such that size of A is m and size of B is n
: You need to find the k th largest sum (a+b) where a is taken from A and b is
: taken from B. such that k < m*n
: 本版又讨论过,但是好像没什么结果。

l*********s
发帖数: 5409
27
mark.
b*****n
发帖数: 2324
28
这个M*N的矩阵的信息足够多了,每个子矩阵的最小值一定在同一个角,先根据k圈出前
几行加若干个,然后在比较边上的值,比圈进来的最小值大,就把最小值换掉,新的最
小值一定还在这个形状的几个角当中,排列这几个角,再圈,直到圈出来的比圈边界外
的所有相邻值都大,这个局部优化一下应该是能做到O(N)的。对不?

is

【在 i**********e 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: ihasleetcode (1337coder), 信区: JobHunting
: 标 题: 一道热门的 Google 面试题
: 发信站: BBS 未名空间站 (Thu Jan 27 21:06:18 2011, 美东)
: 最近非常热门的一道 google 题,大家讨论讨论.
: Two reverse sorted arrays A and B have been given.
: such that size of A is m and size of B is n
: You need to find the k th largest sum (a+b) where a is taken from A and b is
: taken from B. such that k < m*n
: 本版又讨论过,但是好像没什么结果。

T****e
发帖数: 1072
29
我的想法是做一个排序Queue.开始放最大和。去掉队头后把往右往下两分支的数字排序
后放入。使队头永远是当前最大数,队列永远保持排序,这样去掉队头后就可以用二分
法插入新分支的数。
还要保证每个数不被重复加入
n******t
发帖数: 4406
30
这种东西实际中半点毛用没有。

is

【在 i**********e 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: ihasleetcode (1337coder), 信区: JobHunting
: 标 题: 一道热门的 Google 面试题
: 发信站: BBS 未名空间站 (Thu Jan 27 21:06:18 2011, 美东)
: 最近非常热门的一道 google 题,大家讨论讨论.
: Two reverse sorted arrays A and B have been given.
: such that size of A is m and size of B is n
: You need to find the k th largest sum (a+b) where a is taken from A and b is
: taken from B. such that k < m*n
: 本版又讨论过,但是好像没什么结果。

相关主题
[合集] 抛砖引玉-又一道M$面试题的解法... (转载)一道Microsoft的面试题
在两个sorted array里找median嵌入式系统用什么sorting算法比较好?
请大虾验证!请问如何把初始化一个const 的vector (or array) in a class?
进入Programming版参与讨论
c*********t
发帖数: 1861
31
merge sort a and b, then find max i and j st i*j
1 (共1页)
进入Programming版参与讨论
相关主题
Re: amazon onsite interview question (转载)有谁看过youtube上的算法课吗?
问个面试题目关于二维矩阵的C的问题
[合集] 抛砖引玉-又一道M$面试题的解法... (转载)搞个pandas需要啥数学?
在两个sorted array里找median我写的quick sort
请大虾验证!一个java class downcast 的问题
一道Microsoft的面试题又一道面试题,我是不是想多了?
嵌入式系统用什么sorting算法比较好?关于在rotated sorted array中查找的问题
请问如何把初始化一个const 的vector (or array) in a class?为什么不能成功排序
相关话题的讨论汇总
话题: 矩阵话题: findmax话题: google话题: return话题: find