We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 1649025 commit c683c85Copy full SHA for c683c85
Stack/2104.Sum-of-Subarray-Ranges/Readme.md
@@ -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