Skip to content

Latest commit

 

History

History
76 lines (55 loc) · 3.06 KB

File metadata and controls

76 lines (55 loc) · 3.06 KB

1762. Buildings With an Ocean View (Medium)

Date and Time: Dec 8, 2024, 11:51 (EST)

Link: https://leetcode.com/problems/buildings-with-an-ocean-view


Question:

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 <= 10^5

  • 1 <= heights[i] <= 10^9


Walk-through:

  1. Traverse heights from right to left, as the last height as curMax and append its index into res[].

  2. Each time, if heights[i] > curMax we update curMax = heights[i] and add this index i into res[].

  3. Finally, return the reversed res[::-1].


Python Solution:

class Solution:
    def findBuildings(self, heights: List[int]) -> List[int]:
        # Traverse from right to left, save the last height as `curMax`, each time, we compare heights[i] with curMax, if elem > curMax: update curMax and save the index into res[].

        # TC: O(n), n = len(heights), SC: O(n)
        curMax = heights[-1]
        res = [len(heights)-1]
        for i in range(len(heights)-2, -1, -1):
            if heights[i] > curMax:
                curMax = heights[i]
                res.append(i)
        return res[::-1]

Time Complexity: $O(n)$
Space Complexity: $O(n)$


CC BY-NC-SABY: credit must be given to the creatorNC: Only noncommercial uses of the work are permittedSA: Adaptations must be shared under the same terms