Максимизируйте разницу целых чисел в подмассиве размера K
Опубликовано: 21 Сентября, 2022
Дан массив arr[] длины N, задача состоит в том, чтобы найти максимальную разность целых чисел в подмассиве размера K.
Input: arr = [2, 3, -1, -5, 4, 0], K = 3
Output: 9
Explanation: Subarray [-1, -5, 4] contains the maximum difference between -5 and -4 as 9Input: arr = [-2, -4, 0, 1, 5, -6, 9], K =4
Output: 15
Explanation: Subarray [1, 5, -6, 9] contains the maximum difference between -6 and 9 as 15
Подход: Данная проблема может быть решена с использованием метода двух указателей и подхода скользящего окна со структурой данных TreeMap. Для решения проблемы можно выполнить следующие шаги:
- Перебрать массив arr до K – 1 и вставить элементы в TreeMap,
- Если целое число уже присутствует в TreeMap, то увеличьте его частоту на 1
- Итерировать массив arr от K до конца массива, используя указатель вправо и на каждой итерации:
- Вставьте элемент в TreeMap, если он не существует, или увеличьте его частоту на 1
- Удалите крайний левый элемент скользящего окна, если его частота равна единице, или уменьшите его частоту на 1.
- Вычислите разницу между максимальным и минимальным элементами, извлекая первый и последний элемент из treeMap, а также обновите результат res
- Вернуть результирующий результат
Временная сложность: O(N * log K)
Вспомогательное пространство: O(N)