дан массив, для каждого элемента узнайте общее количество меньших элементов, чем он, которые появляются справа от него

Ранее я отправил вопрос, По заданному массиву найдите следующий меньший элемент для каждого элемента теперь я пытался узнать, есть ли способ узнать, «для каждого элемента массива, узнать общее количество элементов, меньших, чем он, которые появляются справа от него» например, массив [4 2 1 5 3] должен давать [3 1 0 1 0]??

[РЕДАКТИРОВАТЬ] Я разработал решение, пожалуйста, взгляните на него и дайте мне знать, если есть какая-либо ошибка.

1 Создайте сбалансированный BST, вставив элементы, пересекающие массив справа налево

2 BST создан таким образом, что каждый элемент содержит размер дерева, корнем которого является этот элемент

3 Теперь, пока вы выполняете поиск для правой позиции для вставки любого элемента учитывайте общий размер поддерева с корнем в левом брате + 1 (для родителя), если вы двигаетесь вправо Теперь, поскольку счетчик подсчитывается во время вставки элемента и что мы движемся справа налево, мы получаем точное количество элементов, меньших, чем данный элемент, появляющийся после него.

11
задан Community 23 May 2017 в 11:46
поделиться