Невозможно понять определенную логику в решенииPython

Программы на Python
Ответить
Anonymous
 Невозможно понять определенную логику в решении

Сообщение Anonymous »

Я практиковал этот вопрос о DSA, и мой университет также предоставил решение, к сожалению, я не могу понять, почему мы берем диапазон (M-N+1) вместо просто диапазона (P+1).
Это вопрос:

Напишите функцию find_Min_Difference(L, P), которая принимает список L целых чисел и P (положительное целое число), где размер L больше P. Задача состоит в том, чтобы выбрать P различных элементов из
списка L, где разница между максимальным и минимальным значением в выбранных элементах минимальна по сравнению с другими различиями в возможном подмножестве из p элементов. Функция возвращает это минимальное значение разницы.
Примечание. Список может содержать более одного подмножества p элементов с одинаковым минимальным значением разницы.
Пример
Пусть L = [3, 4, 1, 9, 56, 7, 9, 12, 13] и P = 5
Если мы см. следующие два подмножества по 5 элементов из L
[3,4, 7, 9, 91] или [7, 9, 9, 12, 13]
Здесь разница между максимальным и минимальным значением в обоих подмножествах составляет 9 - 3 = 6 или 13 - 7 = 6, что является минимальным. Таким образом, результат будет 6.
Пример ввода
[3, 4, 1, 9, 56, 7, 9, 12]

5
Вывод
6

Решение предоставлено университетом:

Код: Выделить всё

def find_Min_Difference(L, P):
L.sort()
N = P
M = len(L)
min_diff = max(L) - min(L)
for i in range(M - N + 1):
if L[i + N - 1] - L[i] < min_diff:
min_diff = L[i + N - 1] - L[i]
return min_diff

L = eval(input().strip())
P = int(input())
print(find_Min_Difference(L, P))
Теперь мы запускаем цикл в M-N+1?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»