Ниже приведено мое решение на 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 .. надеюсь, это добавляет некоторые детали к вопросу ...