Ранее я задавал вопрос Учитывая массив, узнайте следующий меньший элемент для каждого элемента теперь, я пытался узнать, если есть какой-то способ узнать "заданный массив" для каждого элемента, узнать общее количество элементов, меньшее, чем оно, которые справа от него ", например, массив [4 2 1 5 3] должен давать [3 1 0 1 0]??
[EDIT] Я разработал решение, пожалуйста, взгляните на него и сообщите мне, есть ли какая-либо ошибка.
1 Создайте сбалансированные элементы вставки BST, перемещая массив справа налево
2 BST выполнен таким образом, что каждый элемент имеет размер дерева, внедренного в этот элемент
3 Теперь, когда вы ищете правильную позицию для вставки какого-либо элемента, учтите общий размер поддерева, корневого в левой части сиблинга + 1 (для родителя), если вы переместитесь вправо Теперь, поскольку счет вычисляется во время вставки элемента и что мы движемся справа налево, мы получаем точное количество элементов, меньшее, чем данный элемент, появляющийся после него.