Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Assign Cookies

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "455" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor g[i], which is the minimum size of a cookie that the child will be content with; and each cookie j has a size s[j]. If s[j] >= g[i], we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number. Example 1: Input: g = [1,2,3], s = [1,1] Output: 1 Explanation: You have 3 children and 2 cookies. The greed factors of 3 children are 1, 2, 3. And even though you have 2 cookies, since their size is both 1, you could only make the child whose greed factor is 1 content. You need to output 1. Example 2: Input: g = [1,2], s = [1,2,3] Output: 2 Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. You have 3 cookies and their sizes are big enough to gratify all of the children, You need to output 2. Constraints: 1 <= g.length <= 3 104 0 <= s.length <= 3 104 1 <= g[i], s[j] <= 231 - 1 Note: This question is the same as 2410: Maximum Matching of Players With Trainers.

Explanation

Here's the breakdown of the solution:

  • Sorting: Sort both the children's greed factors and the cookie sizes in non-decreasing order. This allows us to efficiently iterate through them, matching the smallest cookies to the least greedy children.
  • Greedy Matching: Iterate through the sorted greed factors and cookie sizes. If a cookie is large enough to satisfy a child, assign it and increment the content children count. Move to the next child and the next cookie.
  • Maximization: By prioritizing the least greedy children and smallest cookies, we maximize the number of children who receive a suitable cookie.

  • Runtime Complexity: O(n log n + m log m), where n is the number of children and m is the number of cookies, due to sorting.

  • Storage Complexity: O(1) excluding the input arrays, as we sort in place.

Code

    def findContentChildren(g, s):
    """
    Finds the maximum number of content children given their greed factors and cookie sizes.

    Args:
        g: A list of integers representing the greed factors of the children.
        s: A list of integers representing the sizes of the cookies.

    Returns:
        The maximum number of content children.
    """

    g.sort()
    s.sort()

    child_index = 0
    cookie_index = 0
    content_children = 0

    while child_index < len(g) and cookie_index < len(s):
        if s[cookie_index] >= g[child_index]:
            content_children += 1
            child_index += 1
        cookie_index += 1

    return content_children

More from this blog

C

Chatmagic blog

2894 posts