1762. Buildings With an Ocean View π
Description
There are n
buildings in a line. You are given an integer array heights
of size n
that represents the heights of the buildings in the line.
The ocean is to the right of the buildings. A building has an ocean view if the building can see the ocean without obstructions. Formally, a building has an ocean view if all the buildings to its right have a smaller height.
Return a list of indices (0-indexed) of buildings that have an ocean view, sorted in increasing order.
Example 1:
Input: heights = [4,2,3,1] Output: [0,2,3] Explanation: Building 1 (0-indexed) does not have an ocean view because building 2 is taller.
Example 2:
Input: heights = [4,3,2,1] Output: [0,1,2,3] Explanation: All the buildings have an ocean view.
Example 3:
Input: heights = [1,3,2,4] Output: [3] Explanation: Only building 3 has an ocean view.
Constraints:
1 <= heights.length <= 105
1 <= heights[i] <= 109
Solutions
Solution 1: Reverse Traversal to Find the Maximum on the Right
We traverse the array \(\textit{height}\) in reverse order for each element \(v\), comparing \(v\) with the maximum element \(mx\) on the right. If \(mx \lt v\), it means all elements to the right are smaller than the current element, so the current position can see the ocean and is added to the result array \(\textit{ans}\). Then we update \(mx\) to \(v\).
After the traversal, return \(\textit{ans}\) in reverse order.
The time complexity is \(O(n)\), where \(n\) is the length of the array. Ignoring the space consumption of the answer array, the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|