Ниже приведено мое решение на C ++, основанное на минимальной куче. Когда ячейка в матрице находится в верхней части минимальной кучи, число справа и / или снизу будет вставлено в кучу.

опрос об интервью Google:

Дана матрица N * N. Все строки отсортированы, а все столбцы отсортированы. Найдите Kth самый большой элемент матрицы.

сделать это в n ^ 2 просто, и мы можем отсортировать его, используя сортировку с кучей или слиянием (n lg n), а затем получить ее, но есть ли лучший подход, лучше, чем (n lg n)?

пример массива ::

 1   5   7  12
 3   6   8  14
 4   9  10  15
11  17  19  20

1 <5 <7 <12 и 1 <3 <4 <11 аналогично другим строкам и столбцам. Теперь скажем, что нам нужно найти 10-й наименьший элемент, здесь он равен 11 .. надеюсь, это добавляет некоторые детали к вопросу ...

Ответы на вопрос(0)

Ваш ответ на вопрос