Создайте массив, заменив любой элемент его ближайшим меньшим соседом

Опубликовано: 22 Февраля, 2023

Учитывая целочисленный массив arr[] размера N , задача состоит в том, чтобы сгенерировать новый массив, заменив i элемент его ближайшим правым меньшим соседом, т. е. на (i+t) элемент, если он меньше.

Примеры:

Input: N = 5, Arr[] = {4, 2, 1, 5, 3}
Output: 2 1 -1 3 -1
Explanation: Array elements are 4, 2, 1, 5, 3.
Next to 4 is 2 which is smaller, so we print 2. Next of 2 is 1 which is smaller, so we print 1. Next of 1 is 5 which is greater, so we print -1. Next of 5 is 3 which is smaller, so we print 3.  Note that for last element, output is always  going to be -1 because there is no element on right.

Input: N = 6, Arr[] = {5, 6, 2, 3, 1, 7}
Output: -1 2 -1 1 -1 -1

Подход: Чтобы решить проблему, следуйте следующей идее:

The idea is to traverse the array and check if the next element is smaller or not. If next element is smaller then replace current element with next smaller element otherwise replace current element with -1.

Выполните следующие шаги, чтобы реализовать вышеуказанную идею:

  • Перебрать массив от i = 0 до i < size of array – 1
    • Проверить, больше ли текущий элемент, чем следующий элемент (т. е. arr[i] > arr[i + 1])
      • Если верно, замените arr[i] = arr[i + 1]
      • В противном случае замените arr[i] = -1

Ниже приведена реализация описанного выше подхода.

Временная сложность: O(N)
Вспомогательное пространство: O(1)