Как использовать деревья сегментов, чтобы найти два наименьших числа и одно максимальное число в диапазоне в несортированном массиве?
В настоящее время я использую дерево сегментов, чтобы найти самое маленькое и самое большое число в диапазоне в несортированном массиве, сравнивая и сохраняя самый маленький и самый большой из подмассивов.
Тем не менее, я запутался в том, какую информацию необходимо сохранить при поиске двух самых маленьких чисел и одного наибольшего числа в диапазоне в несортированном массиве.
0 ответов
Это довольно просто на самом деле,
вместо того, чтобы хранить минимальное и максимальное значения в диапазоне узла, вы можете сохранить максимальное значение и массив /ArrayList минимальных значений.
При объединении 2 узлов:
- Создать новый массив /ArrayList,
- скопируйте в него оба дочерних массива
- Сортировать
- Удалить элементы из спины, пока у вас есть массив с размером <= 2