给出2 D阵列。行和列已排序。
以最有效的方式从二维数组中找到第k个最大元素。可以就地完成吗?
答案 0 :(得分:0)
稍微强力的就地解决方案:尝试通过二分搜索猜测值。你知道最大值和最小值(它们在角落里)。对于每个候选项,在遵循较小和较大元素之间的边界时,计算较小元素的数量。由于数组是排序的,因此该边界是穿过它的相当短的路径。跟踪较小元素中最大值的位置。此值可能会出现多次。数数吧。假设一个NxN数组,这将采用O(N * B),其中B是值的位数。
我只是在大声思考......我依稀记得读到一个非常理想的最佳解决方案,但我不知道在哪里。