Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Maximize Distance to Closest Person

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "849" 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

You are given an array representing a row of seats where seats[i] = 1 represents a person sitting in the ith seat, and seats[i] = 0 represents that the ith seat is empty (0-indexed). There is at least one empty seat, and at least one person sitting. Alex wants to sit in the seat such that the distance between him and the closest person to him is maximized. Return that maximum distance to the closest person. Example 1: Input: seats = [1,0,0,0,1,0,1] Output: 2 Explanation: If Alex sits in the second open seat (i.e. seats[2]), then the closest person has distance 2. If Alex sits in any other open seat, the closest person has distance 1. Thus, the maximum distance to the closest person is 2. Example 2: Input: seats = [1,0,0,0] Output: 3 Explanation: If Alex sits in the last seat (i.e. seats[3]), the closest person is 3 seats away. This is the maximum distance possible, so the answer is 3. Example 3: Input: seats = [0,1] Output: 1 Constraints: 2 <= seats.length <= 2 * 104 seats[i] is 0 or 1. At least one seat is empty. At least one seat is occupied.

Explanation

Here's the breakdown of the approach, complexities, and the Python code:

  • Approach:

    • Find the distance to the closest person from both left and right for each seat.
    • Calculate the minimum of left and right distances for each seat, which represents the distance to the closest person if Alex sits there.
    • Find the maximum of these minimum distances.
  • Complexity:

    • Runtime: O(n), Storage: O(n)

Code

    def max_dist_to_closest(seats):
    n = len(seats)
    left = [n] * n
    right = [n] * n

    # Calculate distances to the closest person from the left
    last = -1
    for i in range(n):
        if seats[i] == 1:
            last = i
        if last != -1:
            left[i] = i - last

    # Calculate distances to the closest person from the right
    last = -1
    for i in range(n - 1, -1, -1):
        if seats[i] == 1:
            last = i
        if last != -1:
            right[i] = last - i

    # Calculate the maximum distance to the closest person
    max_distance = 0
    for i in range(n):
        if seats[i] == 0:
            max_distance = max(max_distance, min(left[i], right[i]))

    return max_distance

More from this blog

C

Chatmagic blog

2894 posts