Buildings With an Ocean View
给一个数组, 里面是房子高度, 默认右侧是大海, 问那些房子能看到海.
这个题主要是问一个数后边有没有数字大于它. 直接从后往前扫即可.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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; } } |