HTMLify
sum-of-subarray-ranges.py
Views: 28 | Author: prakhardoneria
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Solution: def subarrayRanges(self, arr): n = len(arr) def get_contribution(is_min): res = 0 stack = [] for i in range(n + 1): while stack and (i == n or (arr[stack[-1]] > arr[i] if is_min else arr[stack[-1]] < arr[i])): mid = stack.pop() left = stack[-1] if stack else -1 right = i res += arr[mid] * (mid - left) * (right - mid) stack.append(i) return res return get_contribution(False) - get_contribution(True) |