# Solving Leetcode Interviews in Seconds with AI: Where Will the Ball Fall


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "1706" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), 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 have a 2-D grid of size m x n representing a box, and you have n balls. The box is open on the top and bottom sides. Each cell in the box has a diagonal board spanning two corners of the cell that can redirect a ball to the right or to the left.  A board that redirects the ball to the right spans the top-left corner to the bottom-right corner and is represented in the grid as 1. A board that redirects the ball to the left spans the top-right corner to the bottom-left corner and is represented in the grid as -1.  We drop one ball at the top of each column of the box. Each ball can get stuck in the box or fall out of the bottom. A ball gets stuck if it hits a "V" shaped pattern between two boards or if a board redirects the ball into either wall of the box. Return an array answer of size n where answer[i] is the column that the ball falls out of at the bottom after dropping the ball from the ith column at the top, or -1 if the ball gets stuck in the box.   Example 1:   Input: grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]] Output: [1,-1,-1,-1,-1] Explanation: This example is shown in the photo. Ball b0 is dropped at column 0 and falls out of the box at column 1. Ball b1 is dropped at column 1 and will get stuck in the box between column 2 and 3 and row 1. Ball b2 is dropped at column 2 and will get stuck on the box between column 2 and 3 and row 0. Ball b3 is dropped at column 3 and will get stuck on the box between column 2 and 3 and row 0. Ball b4 is dropped at column 4 and will get stuck on the box between column 2 and 3 and row 1.  Example 2:  Input: grid = [[-1]] Output: [-1] Explanation: The ball gets stuck against the left wall.  Example 3:  Input: grid = [[1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1],[1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1]] Output: [0,1,2,3,4,-1]    Constraints:  m == grid.length n == grid[i].length 1 <= m, n <= 100 grid[i][j] is 1 or -1.  

	# Explanation
	Here's the breakdown of the solution:

*   **Simulate ball movement:** For each ball (starting column), simulate its movement through the grid row by row.
*   **Check for stuck conditions:** At each step, check if the ball hits a wall or a "V" shape. If so, mark it as stuck.
*   **Return result:** If the ball reaches the bottom row without getting stuck, record the exit column. Otherwise, record -1.

*   **Time Complexity:** O(m * n), where m is the number of rows and n is the number of columns.  **Space Complexity:** O(n) for the result array.

	
	# Code
	```python
	def findBall(grid):
    """
    Finds the exit column for each ball dropped from the top of the grid.

    Args:
        grid: A 2D list representing the grid of boards.

    Returns:
        A list of integers representing the exit column for each ball,
        or -1 if the ball gets stuck.
    """

    m = len(grid)
    n = len(grid[0])
    result = [-1] * n

    for start_col in range(n):
        curr_col = start_col
        curr_row = 0

        while curr_row < m:
            direction = grid[curr_row][curr_col]

            # Move right
            if direction == 1:
                next_col = curr_col + 1
                if next_col == n:
                    curr_col = -1
                    break  # Stuck against right wall
                if grid[curr_row][next_col] == -1:
                    curr_col = -1
                    break  # Stuck in a V
                else:
                    curr_col = next_col
                    curr_row += 1
            # Move left
            else:  # direction == -1
                next_col = curr_col - 1
                if next_col == -1:
                    curr_col = -1
                    break  # Stuck against left wall
                if grid[curr_row][next_col] == 1:
                    curr_col = -1
                    break  # Stuck in a V
                else:
                    curr_col = next_col
                    curr_row += 1

        result[start_col] = curr_col

    return result
	```
			
