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;
}
}