Number of Visible People in a Queue - Problem

There are n people standing in a queue, numbered from 0 to n - 1 in left to right order. You are given an array heights of distinct integers where heights[i] represents the height of the ith person.

A person can see another person to their right in the queue if everybody in between is shorter than both of them. More formally, the ith person can see the jth person if i < j and min(heights[i], heights[j]) > max(heights[i+1], heights[i+2], ..., heights[j-1]).

Return an array answer of length n where answer[i] is the number of people the ith person can see to their right in the queue.

Input & Output

Example 1 — Basic Queue
$ Input: heights = [10,6,8,5,11,9]
Output: [3,1,2,1,1,0]
💡 Note: Person 0 (height 10) can see persons 1, 2, and 4. Person 1 (height 6) can see person 2. Person 2 (height 8) can see persons 3 and 4. Person 3 (height 5) can see person 4. Person 4 (height 11) can see person 5. Person 5 sees no one.
Example 2 — Increasing Heights
$ Input: heights = [5,1,2,3,10]
Output: [4,1,1,1,0]
💡 Note: Person 0 can see everyone to the right since they're all shorter until person 4. Each person can see the next taller person.
Example 3 — Decreasing Heights
$ Input: heights = [10,8,6,4,2]
Output: [4,3,2,1,0]
💡 Note: In decreasing order, each person can see all people to their right since no one blocks the view.

Constraints

  • 1 ≤ heights.length ≤ 105
  • 1 ≤ heights[i] ≤ 109
  • All values in heights are distinct

Visualization

Tap to expand
Queue Visibility Problem: Count people each person can see10685119012345Person 0 can see persons 1, 2, and 4 (green lines)Cannot see person 5 because person 4 blocks the viewCannot see person 3 because person 2 is tallerOutput: [3, 1, 2, 1, 1, 0]
Understanding the Visualization
1
Input Queue
People standing in queue with different heights
2
Visibility Rules
Person can see another if no taller person blocks the view
3
Count Visible
For each person, count how many they can see to the right
Key Takeaway
🎯 Key Insight: Use a monotonic decreasing stack to efficiently track visible people by processing from right to left
Asked in
Google 15 Amazon 12 Facebook 8 Microsoft 6
28.5K Views
Medium Frequency
~25 min Avg. Time
890 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen