Я столкнулся с проблемой нахождения числа меньших элементов слева от каждого элемента в массиве целых чисел, которое можно решить в O (nlgn) с помощью Binary Indexed деревья (например, AVL и т. д.) или Merge Sort. Используя дерево AVL, можно вычислить размер левого поддерева для каждого элемента, и это будет необходимый ответ. Однако я не могу придумать, как вычислить сумму суммы меньших элементов, оставшихся до каждого элемента эффективно. Для каждого элемента мне нужно пройти левое поддерево и суммировать значения в узлах или есть лучший способ (используя Merge Sort и т. Д.)? Например, для массива: 4,7,1,3,2
Необходимые анны были бы: 0,4,0,1,1
нахождение суммы меньших элементов слева
Спасибо.
Должен ли последний ответ быть '1' тоже? Кроме того, не могли бы вы описать, как решить проблему подсчета с помощью дерева AVL? Мне это непонятно. – svick
thanks..corrected.For подсчет проблемы, при добавлении любого элемента он сравнивается с корнем, если он меньше, а затем добавляет влево вправо. Таким образом, для любого узла размер его левого поддерева будет давать количество элементов меньше, чем оно. – pranay
Да, таким образом вы можете подсчитать количество предметов, которые меньше его. Но они не будут ограничиваться элементами слева от него. О, возможно, теперь я получаю это: вы считаете меньшие предметы сразу после того, как вставляете что-то, а не в конец, правильно? – svick