import java.util.*; class Solution { public List findBuildingViewCount(int[] heights) { int left = 0, right = heights.length - 1; Deque deque = new ArrayDeque<>(); deque.addFirst(left); deque.addLast(right); while (left < right) { if (heights[left] < heights[right]) { left++; if (heights[left] > heights[deque.peekFirst()]) { deque.addFirst(left); } } else { right--; if (heights[right] > heights[deque.peekLast()]) { deque.addLast(right); } } } return new ArrayList<>(deque); } }