1944. Number of Visible People in a Queue
Last updated
Last updated
**Input:** heights = [10,6,8,5,11,9]
**Output:** [3,1,2,1,1,0]
**Explanation:**
Person 0 can see person 1, 2, and 4.
Person 1 can see person 2.
Person 2 can see person 3 and 4.
Person 3 can see person 4.
Person 4 can see person 5.
Person 5 can see no one since nobody is to the right of them.**Input:** heights = [5,1,2,3,10]
**Output:** [4,1,1,1,0]class Solution {
public int[] canSeePersonsCount(int[] heights) {
int[] res = new int[heights.length];
// Edge cases
if (heights == null) {
return res;
}
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < heights.length; i++) {
while (!stack.isEmpty() && heights[stack.peek()] < heights[i]) {
int head = stack.pop();
res[head]++;
}
if (!stack.isEmpty()) {
res[stack.peek()]++;
}
stack.push(i);
}
return res;
}
}
// O(n) time, O(n) space.