Find Robots by Nearest-Blocker Distances

Quick Overview

Locate every robot whose left, top, bottom, and right distances to the nearest blocker or grid boundary match a four-value query.

Find Robots by Nearest-Blocker Distances

Company: Uber

Role: Machine Learning Engineer

Category: Coding & Algorithms

Difficulty: hard

Interview Round: Technical Screen

# Find Robots by Nearest-Blocker Distances Implement `matching_robot_locations(grid: list[list[str]], query: list[int]) -> list[list[int]]`. The rectangular grid contains robots `"O"`, empty cells `"E"`, and blockers `"X"`. For every robot, measure the number of moves in each straight direction until reaching either the first blocker cell or the first position outside the grid. Return the robots whose four distances equal `query`. ### Input Domain - `1 <= len(grid), len(grid[0]) <= 2,000`. - The grid contains at most `1,000,000` cells and all rows have equal length. - Every cell is exactly `"O"`, `"E"`, or `"X"`. - `query` contains four positive integers in `[left, top, bottom, right]` order. ### Output Rules - A blocker one adjacent move away has distance `1`. - If no `"X"` occurs first, leaving the grid counts as reaching a blocker boundary. For example, a robot in column `0` has left distance `1`. - Robots and empty cells do not stop the scan. - Return matching coordinates as `[row, column]` in ascending row-major order. - Return an empty list if no robot matches. ### Constraints - Each distance is an exact integer number of moves. - Target time is `O(rows * columns)`. ### Examples #### Example 1 Input: `grid = [["O","E","E","E","X"],["E","O","X","X","X"],["E","E","E","E","E"],["X","E","O","E","E"],["X","E","X","E","X"]], query = [2,2,4,1]` Output: `[[1,1]]` #### Example 2 Input: `grid = [["O","E","O"]], query = [1,1,1,3]` Output: `[[0,0]]` ```hint Reuse directional scans Distances to the previous or next blocker boundary can be propagated across a row or column rather than recomputed from each robot. ```

Quick Answer: Locate every robot whose left, top, bottom, and right distances to the nearest blocker or grid boundary match a four-value query.

|Home/Coding & Algorithms/Uber
Uber logo
Uber
Sep 2, 2026
hardMachine Learning EngineerTechnical ScreenCoding & Algorithms
1
0

Find Robots by Nearest-Blocker Distances

Implement matching_robot_locations(grid: list[list[str]], query: list[int]) -> list[list[int]].

The rectangular grid contains robots "O", empty cells "E", and blockers "X". For every robot, measure the number of moves in each straight direction until reaching either the first blocker cell or the first position outside the grid. Return the robots whose four distances equal query.

Input Domain

  • 1 <= len(grid), len(grid[0]) <= 2,000 .
  • The grid contains at most 1,000,000 cells and all rows have equal length.
  • Every cell is exactly "O" , "E" , or "X" .
  • query contains four positive integers in [left, top, bottom, right] order.

Output Rules

  • A blocker one adjacent move away has distance 1 .
  • If no "X" occurs first, leaving the grid counts as reaching a blocker boundary. For example, a robot in column 0 has left distance 1 .
  • Robots and empty cells do not stop the scan.
  • Return matching coordinates as [row, column] in ascending row-major order.
  • Return an empty list if no robot matches.

Constraints

  • Each distance is an exact integer number of moves.
  • Target time is O(rows * columns) .

Examples

Example 1

Input: grid = [["O","E","E","E","X"],["E","O","X","X","X"],["E","E","E","E","E"],["X","E","O","E","E"],["X","E","X","E","X"]], query = [2,2,4,1]

Output: [[1,1]]

Example 2

Input: grid = [["O","E","O"]], query = [1,1,1,3]

Output: [[0,0]]

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...