一、题目
Given an array of integers A, find the sum of min(B), where B ranges over every (contiguous) subarray of A.
Since the answer may be large, return the answer modulo 10^9 + 7.
- 1 <= A.length <= 30000
- 1 <= A[i] <= 30000
二、题目大意
对于给定的整型数组A,找出A的所有子数组,输出这些子数组中最小值的和。(值可能非常的大,需要对10^9+7取模运算)
三、解题思路
这道题很容易想出的思路就是找出所有的组合, 然后求解最小值的和:
const sumSubarrayMins = A => {
const max = A.length
const MAX = 10 ** 9 + 7
let ans = 0
for (let i = 0; i < max; i++) {
let end = i
let min = Number.MAX_SAFE_INTEGER
while (end >= 0) {
min = Math.min(min, A[end])
ans = (ans + min) % MAX
end--
}
}
return ans % MAX
}
但是由于数