LeetCode - 1944 队列中可以看到的人数 (单调栈)

LeetCode - 1944 队列中可以看到的人数 (单调栈)_第1张图片
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第2张图片
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第3张图片

单调栈
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第4张图片
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第5张图片
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第6张图片
LeetCode - 1944 队列中可以看到的人数 (单调栈)_第7张图片

class Solution {
    public int[] canSeePersonsCount(int[] heights) {
        int n = heights.length;
        Deque<Integer> deque = new LinkedList<>();
        int[] ans = new int[n];
        for(int i = n-1; i >= 0 ;i--){
             while(deque.size()!=0 && heights[deque.peekFirst()] < heights[i]){
                 deque.pollFirst();
                 ans[i] += 1;
             }
             if(deque.size()!=0)
               ans[i] += 1;
             deque.offerFirst(i);
        }
        return ans;
    }
}

你可能感兴趣的:(leetcode,算法,排序算法)