Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public List<Integer> findBuildingViewCount(int[] heights) {
- int n = heights.length;
- if (n == 1) return Collections.singletonList(0);
- List<Integer> leftView = new ArrayList<>();
- List<Integer> rightView = new ArrayList<>();
- int left = 0, right = n - 1;
- leftView.add(left);
- rightView.add(right);
- while (left < right) {
- if (heights[left] < heights[right]) {
- if (heights[left] > heights[leftView.get(leftView.size()-1)]) {
- leftView.add(left);
- }
- left++;
- } else {
- if (heights[right] > heights[rightView.get(rightView.size()-1)]) {
- rightView.add(right);
- }
- right--;
- }
- }
- // Merge rightView in correct order (from rightmost to leftmost)
- while (!rightView.isEmpty()) {
- leftView.add(rightView.remove(rightView.size()-1));
- }
- return new ArrayList<>(leftView);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement