DDSA Solutions

Facing the sun

Time: O(n)
Space: O(1)
Advertisement

Intuition

Count buildings that can see the sunrise (no taller building to the left). Scan left to right tracking max height.

Algorithm

  1. 1maxH = 0. For each building: if height > maxH: count++, maxH = height.

Common Pitfalls

  • First building always sees sun. Each subsequent: sees sun only if taller than all previous. O(n).
Facing the sun.java
Java
// Approach: Greedy. A building faces sun if it is taller than all buildings to its left.
// Track the current maximum height from the left.
// Time: O(n) Space: O(1)
class Solution {
    // Returns count buildings that can see sunlight
    public int countBuildings(int[] height) {
        int maxi = height[0];
        int cnt = 1;

        for (int i = 1; i < height.length; i++) {
            if (height[i] > maxi) {
                maxi = height[i];
                cnt++;
            }

        }
        return cnt;
    }
}
Advertisement
Was this solution helpful?