HTMLify
maximum-people-visible-in-a-line.py
Views: 24 | 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) |