Минимальное и максимальное количество узлов между критическими точками
Учитывая массив 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), мы используем дополнительное пространство в функции.