Программа курса:
Разбор задачи: Назначение файлов cookie
Предложенный нами код решения:
def find_content_children(g, s):
"""
:param g: список факторов жадности детей
:param s: список размеров печенья
:return: максимальное количество довольных детей
"""
# Сортируем списки факторов жадности и размеров печенья
g.sort()
s.sort()
child_i = 0 # Индекс текущего ребенка
cookie_j = 0 # Индекс текущего печенья
# Проходим по спискам, пока есть дети и печенья
while child_i < len(g) and cookie_j < len(s):
if s[cookie_j] >= g[child_i]: # Если печенье достаточно большое
child_i += 1 # Этот ребенок доволен
cookie_j += 1 # Переходим к следующему печенью
return child_i # Количество довольных детейПошаговый разбор:
- Инициализация функции и комментарии:
- Объявляем функцию
find_content_childrenс параметрамиg(список жадностей детей) иs(список размеров печенья). - Добавляем комментарии, чтобы объяснить каждый шаг кода.
- Объявляем функцию
Сортировка входных данных:
- Списки
gиsсортируются с помощью метода.sort(). Это нужно для того, чтобы:- Обрабатывать детей с наименьшей жадностью первыми.
- Использовать самые маленькие подходящие печенья.
g.sort() s.sort()- Списки
Инициализация указателей:
child_i = 0— индекс текущего ребенка, который ждет печенье.cookie_j = 0— индекс текущего печенья.
child_i = 0 cookie_j = 0Основной цикл:
- Цикл продолжается, пока есть дети (
child_i < len(g)) и печенья (cookie_j < len(s)). - На каждой итерации проверяется, подходит ли текущее печенье ребенку:
- Если размер печенья
s[cookie_j]больше или равен жадности ребенкаg[child_i], ребенок доволен:- Увеличиваем индекс
child_iна 1, чтобы перейти к следующему ребенку.
- Увеличиваем индекс
- В любом случае увеличиваем
cookie_j, чтобы перейти к следующему печенью.
- Если размер печенья
while child_i < len(g) and cookie_j < len(s): if s[cookie_j] >= g[child_i]: # Если печенье достаточно большое child_i += 1 # Этот ребенок доволен cookie_j += 1 # Переходим к следующему печенью- Цикл продолжается, пока есть дети (
Возврат результата:
- После завершения цикла
child_iуказывает на количество довольных детей, так как каждый обработанный ребенок получил подходящее печенье.
return child_i- После завершения цикла
Пример работы
Пример 1:
Ввод: g = [1, 2, 3], s = [1, 1]
- Сортируем списки:
g = [1, 2, 3],s = [1, 1]. - Начинаем обработку:
- Первый ребенок (жадность = 1) получает первое печенье (размер = 1).
- Второе печенье (размер = 1) не подходит ребенку с жадностью = 2.
- Вывод:
1ребенок доволен.
Пример 2:
Ввод: g = [1, 2], s = [1, 2, 3]
- Сортируем списки:
g = [1, 2],s = [1, 2, 3]. - Начинаем обработку:
- Первый ребенок (жадность = 1) получает первое печенье (размер = 1).
- Второй ребенок (жадность = 2) получает второе печенье (размер = 2).
- Вывод:
2ребенка довольны.
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии