OJ练习第188题——队列中可以看到的人数

队列中可以看到的人数

力扣链接:1944. 队列中可以看到的人数

题目描述

OJ练习第188题——队列中可以看到的人数_第1张图片

示例

OJ练习第188题——队列中可以看到的人数_第2张图片

解题思路(单调栈)

分析图例可以发现,第 0个人可以看到的三个人的身高是严格递增的。如果满足 i OJ练习第188题——队列中可以看到的人数_第3张图片

class Solution {
    public int[] canSeePersonsCount(int[] heights) {
        int n = heights.length;
        Deque<Integer> stack = new ArrayDeque<Integer>();
        int[] res = new int[n];
        for(int i = n - 1; i >= 0; i--) {
            int h = heights[i];
            while(!stack.isEmpty() && stack.peek() < h) {
                stack.pop();
                res[i]++;
            }
            if(!stack.isEmpty()) {
                res[i]++;
            }
            stack.push(h);
        }
        return res;
    }
}

触类旁通

单调栈:OJ练习第101题——柱状图中最大的矩形

你可能感兴趣的:(OJ练习,java,单调栈)