Dashboard Temp Share Shortlinks Frames API

HTMLify

maximum-people-visible-in-a-line.py
Views: 25 | Author: prakhardoneria
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution:
    def maxPeople(self, arr):
        n = len(arr)
        if n == 0:
            return 0
        
        visible_counts = [1] * n
        
        stack = []
        for i in range(n):
            while stack and arr[stack[-1]] < arr[i]:
                stack.pop()
            
            if stack:
                left_boundary = stack[-1]
                visible_counts[i] += (i - left_boundary - 1)
            else:
                visible_counts[i] += i
            stack.append(i)
            
        stack = []
        for i in range(n - 1, -1, -1):
            while stack and arr[stack[-1]] < arr[i]:
                stack.pop()
                
            if stack:
                right_boundary = stack[-1]
                visible_counts[i] += (right_boundary - i - 1)
            else:
                visible_counts[i] += (n - 1 - i)
            stack.append(i)
            
        return max(visible_counts)