Buildings With an Ocean View

给一个数组, 里面是房子高度, 默认右侧是大海, 问那些房子能看到海.

这个题主要是问一个数后边有没有数字大于它. 直接从后往前扫即可.

class Solution {
    public int[] findBuildings(int[] heights) {
        List<Integer> list = new ArrayList<>(); 
        int n = heights.length;
        int highest = Integer.MIN_VALUE;
        for(int i = n - 1; i >= 0; i--) {
            if(heights[i] > highest)
                list.add(i);
            highest = Math.max(highest, heights[i]);
        }
        Collections.sort(list); 
        int[] res = new int[list.size()];
        for(int i = 0; i < list.size(); i++){
            res[i] = list.get(i);
        }
        return res;
    }
}