Assign Cookies

https://leetcode.com/problems/assign-cookiesEasy

Условие

У вас есть два массива целых чисел: g и s, где g[i] — это минимальный размер печенья, необходимый для удовлетворения ребенка i, а s[j] — это размер печенья j. Каждый ребенок может быть удовлетворен только одним печеньем, и каждый размер печенья может быть использован только один раз. Нужно вернуть максимальное количество детей, которых можно удовлетворить.

Примеры

Input: g = [1,2,3], s = [1,1]

Output: 1

Explanation: Один ребенок может быть удовлетворен одним печеньем размером 1.
Input: g = [1,2], s = [1,2,3]

Output: 2

Explanation: Два ребенка могут быть удовлетворены печеньями размеров 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), если не учитывать входные данные, так как используются только фиксированные дополнительные переменные