Skip to content
Go back

1944-number-of-visible-people-in-a-queue

1944 https://leetcode.cn/problems/number-of-visible-people-in-a-queue/

单调栈

struct Solution {}

impl Solution {
  pub fn can_see_persons_count(heights: Vec<i32>) -> Vec<i32> {
    let mut stack: Vec<i32> = vec![heights[heights.len() - 1]];
    let mut ret: Vec<i32> = vec![0];

    (0..heights.len() - 1).rev().for_each(|idx| {
      let mut count: i32 = 0;
      while stack.len() > 0 && stack[stack.len() - 1] < heights[idx] {
        stack.pop();
        count += 1;
      }
      if stack.len() > 0 {
        count += 1;
      }
      ret.push(count);
      stack.push(heights[idx]);
    });

    ret.reverse();
    ret
  }
}

Share this post on:

Previous Post
446-arithmetic-slices-ii-subsequence
Next Post
容疑者Xの献身