Number of Visible People in a Queue
给一个数组, 求返回一个数组, 是当前数字往右看到所有的数字的数量.
好吧..有点费劲, 上来能反应过来是单调栈, 然后实现发现怎么也过不了, 原来题意中定义的看到不是说小于当前数,而是问有多少递增的数字. 比如[11,2,1,12]中, 11能看到的只有2和12…..1是看不到的..被2挡住了
class Solution {
public int[] canSeePersonsCount(int[] heights) {
Stack<Integer> st = new Stack<>();
int[] res = new int[heights.length];
for(int i = heights.length - 1; i >= 0; i--){
int count = 0;
while(!st.isEmpty() && st.peek() < heights[i]){
count++;
st.pop();
}
res[i] = count + (st.isEmpty() ? 0 : 1);
st.push(heights[i]);
}
return res;
}
}