Учитывая массив из N натуральных чисел в диапазоне от индекса 0 до N - 1, как я могу найти непрерывный подмассив длины K с минимально возможным диапазоном. Другими словами, max (subarray) - min (subarray) минимизируется. Если есть несколько ответов, любой подойдет.
Например, найдите подмассив длины 2 с наименьшим диапазоном из [4, 1, 2, 6]
Ответ будет [ 1, 2] при 2 - 1 = 1 дает наименьший диапазон из всех возможных смежных подмассивов.
Другие подмассивы: [4, 1] (диапазон 3), [2, 6] (диапазон 4)
Я использую python, и до сих пор я пробовал линейный искать с помощью функций min () max (), и это не кажется эффективным. Я думал об использовании minheap, но я не уверен, как бы вы это реализовали, и я даже не уверен, сработает ли это. Любая помощь будет высоко ценится.
редактировать: код добавлен
# N = length of array_of_heights, K = subarray length
N, K = map(int, input().split(' '))
array_of_heights = [int(i) for i in input().split(' ')]
min_min = 100000000000000000000
# iterates through all subarrays in the array_of_heights of length K
for i in range(N + 1 - K):
subarray = land[i : i + K]
min_min = min(max(subarray)-min(subarray), min_min)
print(min_min)