25. 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:
vector<int> canSeePersonsCount(vector<int> &heights)
{
int n = heights.size();
vector<int> v(n, 0);
stack<int> s;
s.push(heights[n - 1]);
for (int i = n - 2; i >= 0; i--)
{
while (!s.empty() && s.top() < heights[i])
{
v[i]++;
s.pop();
}
if (!s.empty())
{
v[i]++;
}
s.push(heights[i]);
}
return v;
}
};