Я читал некоторые вопросы интервью с практикой, и у меня есть вопрос об этом. Предположим, что список случайных чисел каждый между 1 & 100, вычислить сумму k наибольших целых чисел? Обсудите пространственную и временную сложность и изменится ли подход, если каждое целое число находится между 1 & m, где m изменяется?Эффективный способ вычисления суммы k наибольших чисел в списке?
Моя первая мысль - отсортировать массив и вычислить сумму самых больших k чисел. Затем я подумал, что если я использую двоичную древовидную структуру, где я могу смотреть, начиная с нижнего правого дерева. Я не уверен, изменится ли мой подход, будут ли цифры от 1 до 100 или от 1 до m? Любые мысли о наиболее эффективном подходе?
Если я сделаю это с BST, я бы посмотрел на nlog (n) в среднем? – user1529412
Да, я так думаю. Предполагая, что вы строите сбалансированную двоичную структуру дерева поиска, каждая вставка займет приблизительно O (log n), а после ее создания вам придется суммировать по всему поддереву. Куча была бы более подходящей, но еще более сложной, чем вышеупомянутые решения. –
В альтернативной подсчету не должно быть сложного времени O (n + m)? –