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
heightsare distinct
Visualization
Tap to expand
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
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code