可以看作单调栈来解决。
这个算法的时间复杂度是O(N),空间复杂度是O(N)。
python:
class Solution:
def sumSubarrayMins(self, arr: List[int]) -> int:
res = 0
arr = arr + [0]
stack = [-1]
size = len(arr)
for i in range(size):
while arr[stack[-1]] > arr[i]:
idx = stack.pop()
res += arr[idx] * (idx - stack[-1]) * (i - idx)
stack.append(i)
return res % (10 ** 9 + 7)
PREVIOUSlc100.相同的树
NEXTlc202.快乐数