Количество итераций, чтобы сделать его минимальным, равным 0, путем вращения массива с последующим уменьшением его от исходного массива.

Опубликовано: 20 Сентября, 2022

Дан массив arr[]. Задача состоит в том, чтобы найти количество итераций, необходимое для того, чтобы минимальный элемент в массиве стал равным 0 . В одной итерации поверните массив влево на единицу и вычтите соответствующий элемент исходного массива и повернутого массива.

Примеры:

Input: arr[] = { 2, 6, 3, 4, 8, 7 }
Output: 3
Explanation: Refer to the image below for explanation.

Input: arr[] = { 4, 10, 12, 3, 9, 7 }
Output: 5

Наивный подход: самый простой способ решить эту проблему — использовать жадный подход.

  • Просто извлеките первый элемент массива и добавьте его в конец, а затем выполните вычитание соответствующего элемента.
  • Точно так же выполните ту же операцию с результирующим массивом, пока мы не получим минимальный элемент в массиве как ноль и не вернем количество итераций.

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

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

Эффективный подход. Оптимизированный по пространству подход основан на логике и реализации. Выполните следующие шаги, чтобы решить данную проблему.

  • Сохраните первый элемент массива в переменной x .
  • Теперь найдите абсолютную разницу между последовательными элементами.
  • Заменить результат с индекса 0 .
  • Вычтите последний элемент из переменной x и сохраните его.
  • подсчитайте итерацию и повторите шаги.
  • Возврат считается окончательным ответом.

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

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