在2D排序数组中找到k个最小\最大元素

时间:2013-02-03 22:49:56

标签: c# algorithm data-structures

给出2 D阵列。行和列已排序。

以最有效的方式从二维数组中找到第k个最大元素。可以就地完成吗?

1 个答案:

答案 0 :(得分:0)

稍微强力的就地解决方案:尝试通过二分搜索猜测值。你知道最大值和最小值(它们在角落里)。对于每个候选项,在遵循较小和较大元素之间的边界时,计算较小元素的数量。由于数组是排序的,因此该边界是穿过它的相当短的路径。跟踪较小元素中最大值的位置。此值可能会出现多次。数数吧。假设一个NxN数组,这将采用O(N * B),其中B是值的位数。

我只是在大声思考......我依稀记得读到一个非常理想的最佳解决方案,但我不知道在哪里。