Минимальное и максимальное количество узлов между критическими точками

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

Учитывая массив arr[], верните массив размера 2, состоящий из 2 значений, первое — minDistance, а второе — maxDistance . Здесь minDistance — это минимальное расстояние между любыми двумя различными критическими точками, а maxDistance — это максимальное расстояние между любыми двумя различными критическими точками, и случайно, если критических точек меньше двух, оно должно возвращать [-1, -1].

Примеры:

Input: arr[] = {3, 1}
Output: {-1, -1}
Explanation: There are no critical points in Array
Input: arr[] = {5, 3, 1, 2, 5, 1, 2}
Output: {1, 3}
Explanation: There are three critical points at indexes 2, 4 and 5 in the Array (0 Based Indexing). So the minimum distance is between 4 and 5 which is 1 and the maximum distance is 2.

Подход: Задача может быть решена путем хранения индексов критических точек. Выполните следующие шаги, чтобы решить проблему:

  • Перебираем массив, и если мы получим критическую точку, мы вставим ее в массив позиций.
  • Проверьте, меньше ли его размер или равен 1, если это правда, то нам просто нужно вернуть массив, который содержит -1 и -1
  • В противном случае мы получим максимальное расстояние, вычитая последнее значение и первое значение массива позиций, и минимальное расстояние, которое мы можем получить, используя уравнение mval=min(mval, pos[i]-pos[i-1]), для всех i>1.

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

Временная сложность : O(n), n — количество элементов в массиве.
Вспомогательное пространство : O(n), мы используем дополнительное пространство в функции.