1944. Number of Visible People in a Queue LeetCode Solution

In this guide, you will get 1944. Number of Visible People in a Queue LeetCode Solution with the best time and space complexity. The solution to Number of Visible People in a Queue problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Number of Visible People in a Queue solution in C++
  4. Number of Visible People in a Queue solution in Java
  5. Number of Visible People in a Queue solution in Python
  6. Additional Resources
1944. Number of Visible People in a Queue LeetCode Solution image

Problem Statement of Number of Visible People in a Queue

There are n people standing in a queue, and they 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 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.

Example 1:

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.

Example 2:

Input: heights = [5,1,2,3,10]
Output: [4,1,1,1,0]

Constraints:

n == heights.length
1 <= n <= 105
1 <= heights[i] <= 105
All the values of heights are unique.

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(n)

1944. Number of Visible People in a Queue LeetCode Solution in C++

class Solution {
 public:
  vector<int> canSeePersonsCount(vector<int>& heights) {
    const int n = heights.size();
    vector<int> ans(n);
    stack<int> stack;

    for (int i = 0; i < n; ++i) {
      while (!stack.empty() && heights[stack.top()] <= heights[i])
        ++ans[stack.top()], stack.pop();
      if (!stack.empty())
        ++ans[stack.top()];
      stack.push(i);
    }

    return ans;
  }
};
/* code provided by PROGIEZ */

1944. Number of Visible People in a Queue LeetCode Solution in Java

class Solution {
  public int[] canSeePersonsCount(int[] heights) {
    final int n = heights.length;
    int[] ans = new int[n];
    Deque<Integer> stack = new ArrayDeque<>();

    for (int i = 0; i < n; ++i) {
      while (!stack.isEmpty() && heights[stack.peek()] <= heights[i])
        ++ans[stack.pop()];
      if (!stack.isEmpty())
        ++ans[stack.peek()];
      stack.push(i);
    }

    return ans;
  }
}
// code provided by PROGIEZ

1944. Number of Visible People in a Queue LeetCode Solution in Python

class Solution:
  def canSeePersonsCount(self, heights: list[int]) -> list[int]:
    ans = [0] * len(heights)
    stack = []

    for i, height in enumerate(heights):
      while stack and heights[stack[-1]] <= height:
        ans[stack.pop()] += 1
      if stack:
        ans[stack[-1]] += 1
      stack.append(i)

    return ans
# code by PROGIEZ

Additional Resources

Happy Coding! Keep following PROGIEZ for more updates and solutions.