Assign Cookies
https://leetcode.com/problems/assign-cookies | Easy |
Условие
У вас есть два массива целых чисел: g и s, где g[i] — это минимальный размер печенья, необходимый для удовлетворения ребенка i, а s[j] — это размер печенья j. Каждый ребенок может быть удовлетворен только одним печеньем, и каждый размер печенья может быть использован только один раз. Нужно вернуть максимальное количество детей, которых можно удовлетворить.
Примеры
Input:
g = [1,2,3], s = [1,1]Output:
1Explanation:
Один ребенок может быть удовлетворен одним печеньем размером 1.
Input:
g = [1,2], s = [1,2,3]Output:
2Explanation:
Два ребенка могут быть удовлетворены печеньями размеров 1 и 2.
Решение
fun findContentChildren(g: IntArray, s: IntArray): Int {
g.sort() // Сортируем требования детей
s.sort() // Сортируем размеры печенья
var child = 0 // Индекс для отслеживания детей
var cookie = 0 // Индекс для отслеживания печенья
// Пытаемся удовлетворить каждого ребенка на основе минимальных требований и размеров печенья
while (child < g.size && cookie < s.size) {
if (s[cookie] >= g[child]) { // Если печенье удовлетворяет ребенка
child++ // Переходим к следующему ребенку
}
cookie++ // Переходим к следующему печенью
}
return child // Возвращаем количество удовлетворенных детей
}
Временная сложность
O(n log n + m log m), где n — длина массива g, а m — длина массива s, так как мы сортируем оба массива.
Пространственная сложность
O(1), если не учитывать входные данные, так как используются только фиксированные дополнительные переменные