Advertisement
darekfive

Buildings with an ocean view both side view update

Mar 2nd, 2025
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.08 KB | None | 0 0
  1. class Solution {
  2.     public List<Integer> findBuildingViewCount(int[] heights) {
  3.         int n = heights.length;
  4.         if (n == 1) return Collections.singletonList(0);
  5.  
  6.         List<Integer> leftView =  new ArrayList<>();
  7.         List<Integer> rightView =  new ArrayList<>();
  8.  
  9.         int left = 0, right = n - 1;
  10.         leftView.add(left);
  11.         rightView.add(right);
  12.  
  13.         while (left < right) {
  14.             if (heights[left] < heights[right]) {
  15.                 if (heights[left] > heights[leftView.get(leftView.size()-1)]) {
  16.                     leftView.add(left);
  17.                 }
  18.                 left++;
  19.             } else {
  20.                 if (heights[right] > heights[rightView.get(rightView.size()-1)]) {
  21.                     rightView.add(right);
  22.                 }
  23.                 right--;
  24.             }
  25.         }
  26.  
  27.         // Merge rightView in correct order (from rightmost to leftmost)
  28.         while (!rightView.isEmpty()) {
  29.             leftView.add(rightView.remove(rightView.size()-1));
  30.         }
  31.  
  32.         return new ArrayList<>(leftView);
  33.     }
  34. }
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement