跳到主要内容

1944.队列中可以看到的人数

链接:1944.队列中可以看到的人数
难度:Hard
标签:栈、数组、单调栈
简介:请你返回一个长度为 n 的数组 answer ,其中 answer[i] 是第 i 个人在他右侧队列中能 看到 的 人数 。

题解 1 - python

  • 编辑时间:2024-01-05
  • 执行用时:140ms
  • 内存消耗:30.22MB
  • 编程语言:python
  • 解法介绍:单调栈。
class Solution:
def canSeePersonsCount(self, heights: List[int]) -> List[int]:
n = len(heights)
ans = [0] * n
s = []
for i in range(n):
while s and heights[s[-1]] < heights[i]: ans[s.pop()] += 1
if s: ans[s[-1]] += 1
s.append(i)
return ans