Skip to content

Commit c683c85

Browse files
authored
Create Readme.md
1 parent 1649025 commit c683c85

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
### 2104.Sum-of-Subarray-Ranges
2+
3+
此题和```907.Sum-of-Subarray-Minimums```非常相似。我们不是根据每个区间来考察它的最大值(或最小值)。而是根据根据最大值(或最小值)来考察对应的区间。
4+
5+
我们考察每个元素nums[i],它作为区间最大值时,可以是哪些区间?假设有a个。另外,它作为区间最小值时,可以是哪些区间?假设有b个。那么该元素对于最终答案的贡献就是```nums[i]*a-nums[i]*b```.
6+
7+
那么怎么求解a呢?只要用单调栈,来算出nums[i]的prevSmaller所在的位置l,nextSmaller所在的位置r,那么这样的区间的数目就有```a=(i-l)*(r-i)```个。求解b同理。
8+
9+
特别注意的是,对于区间内如果存在多个相同的最大值,我们需要约定,比如只有最靠右边的那个才是最大值。在这样的情况下,我们实际计算的应该是prevSmallerOrEqual而不是prevSmaller.

0 commit comments

Comments
 (0)