由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个老算法题, k-th largest sum
相关主题
Find the K largest element in a sorted M*N array一道Google面试题
一道热门的 Google 面试题[算法] unsorted array
求这道题的O(N)解 (转载)a[i] + b[j] = c[k] 的题有靠谱的答案不?
算法一问算法--找一个unsorted array的largest and second largest 最
请问一个老的google题关于找Kth Min in 2 sorted array的问题(leetcode请进)
请教一个题: Median of Two Sorted ArraysFind the Kth smallest element in 2 sorted
一个NxN矩阵每行每列都sort好,如何排序?Young Tableau如何找出前n个最小元素?
find Kth Largest Element 有没有更简化的解法Print out all elements in a sorted matrix
相关话题的讨论汇总
话题: max话题: pair话题: heap话题: largest话题: th
进入JobHunting版参与讨论
1 (共1页)
e******s
发帖数: 38
1
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.
看了好多论坛上的答案,好像都不是很清楚。 有一个用max-heap做的,就是每次从
heap里pop出一个
pair(a[i]+b[j]),然后将 pair(a[i],b[j+1]) 和pair(a[i+1],b[j]) insert到heap里。
但好像需要check是不是重复的pair(a[i],b[j])已经在heap里了。 不知道有没有人有
更清楚的解
法,多谢。
g*****i
发帖数: 19
2
据我所知,用max-heap做的办法(klgn) 是最efficient 办法了。为避免重复,必须用
个变量J-Max track 目前max-heap中所有pair的最大的j. 如果j < J_Max, insert
pair(a[i+1],b[j])到heap里; 如果j = J_Max, 将 pair(a[i],b[j+1]) 和pair(a[i+1
],b[j]) insert到heap里, update as J_Max = J_Max+1.

m
is
里。

【在 e******s 的大作中提到】
: 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.
: 看了好多论坛上的答案,好像都不是很清楚。 有一个用max-heap做的,就是每次从
: heap里pop出一个
: pair(a[i]+b[j]),然后将 pair(a[i],b[j+1]) 和pair(a[i+1],b[j]) insert到heap里。
: 但好像需要check是不是重复的pair(a[i],b[j])已经在heap里了。 不知道有没有人有
: 更清楚的解
: 法,多谢。

r*******y
发帖数: 1081
3
感觉要看k的大小阿,
比如 a1>a2>a3>..., b1>b2>b3>...
那么 kth largest 应该出现在 这 k个 序列里面.
a_i +b_1, a_i + b_2, ..., a_i + b_k
i= 1, 2, ..., k
然后对这 k个序列做 merge sort, 当拿到 第k个数的时候就是 kth largest.
如果k 比较小的话,这个算法还行吧。

m
is
里。

【在 e******s 的大作中提到】
: 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.
: 看了好多论坛上的答案,好像都不是很清楚。 有一个用max-heap做的,就是每次从
: heap里pop出一个
: pair(a[i]+b[j]),然后将 pair(a[i],b[j+1]) 和pair(a[i+1],b[j]) insert到heap里。
: 但好像需要check是不是重复的pair(a[i],b[j])已经在heap里了。 不知道有没有人有
: 更清楚的解
: 法,多谢。

g**e
发帖数: 6127
4
using young tabelau is clearer.
这个特殊的young tableau求前k个最小值以前讨论过,一直没有更好的算法,没有利用
到这个特殊young tableau的属性
求O(n)算法

m
is
里。

【在 e******s 的大作中提到】
: 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.
: 看了好多论坛上的答案,好像都不是很清楚。 有一个用max-heap做的,就是每次从
: heap里pop出一个
: pair(a[i]+b[j]),然后将 pair(a[i],b[j+1]) 和pair(a[i+1],b[j]) insert到heap里。
: 但好像需要check是不是重复的pair(a[i],b[j])已经在heap里了。 不知道有没有人有
: 更清楚的解
: 法,多谢。

e******s
发帖数: 38
5

+1
非常感谢!

【在 g*****i 的大作中提到】
: 据我所知,用max-heap做的办法(klgn) 是最efficient 办法了。为避免重复,必须用
: 个变量J-Max track 目前max-heap中所有pair的最大的j. 如果j < J_Max, insert
: pair(a[i+1],b[j])到heap里; 如果j = J_Max, 将 pair(a[i],b[j+1]) 和pair(a[i+1
: ],b[j]) insert到heap里, update as J_Max = J_Max+1.
:
: m
: is
: 里。

d****t
发帖数: 6
6
Is one single J_Max sufficient?
It needs to be an array J_Maxes instead of one single value J_Max, while
J_Maxes[i] means for each i, the largest J so far. For any given i, the
j_max value is always increasing, but not globally.

pair(a[i+1

【在 g*****i 的大作中提到】
: 据我所知,用max-heap做的办法(klgn) 是最efficient 办法了。为避免重复,必须用
: 个变量J-Max track 目前max-heap中所有pair的最大的j. 如果j < J_Max, insert
: pair(a[i+1],b[j])到heap里; 如果j = J_Max, 将 pair(a[i],b[j+1]) 和pair(a[i+1
: ],b[j]) insert到heap里, update as J_Max = J_Max+1.
:
: m
: is
: 里。

n********5
发帖数: 323
7
reverse sorted arrays 是不是可以 divide and conquer同时比较两个array的值..
. 例如:
a1 b1 可以比较a2<>= b2..
因为找Kth max,同时是reverse sorted.
1 (共1页)
进入JobHunting版参与讨论
相关主题
Print out all elements in a sorted matrix请问一个老的google题
这题怎么做?请教一个题: Median of Two Sorted Arrays
问道面试题一个NxN矩阵每行每列都sort好,如何排序?
median of an array of ints, 请问这题的经典回答是什么?谢谢find Kth Largest Element 有没有更简化的解法
Find the K largest element in a sorted M*N array一道Google面试题
一道热门的 Google 面试题[算法] unsorted array
求这道题的O(N)解 (转载)a[i] + b[j] = c[k] 的题有靠谱的答案不?
算法一问算法--找一个unsorted array的largest and second largest 最
相关话题的讨论汇总
话题: max话题: pair话题: heap话题: largest话题: th