单调栈
考察单调栈。
我们需要维护一个递增的单调栈,同时要给下标入栈,而不是元素入栈。
给i位置入栈的时候,发现右指针i+1位置元素一定小,而左指针i-1位置元素也一定小,所以当前i位置元素出栈对应的答案为((i+1)指向的下标的元素 - (i-1)指向的下标的元素 - 1)*a[i的下标]
元素:2 1 5 6 2 3
下标:0 1 2 3 4 5
2入栈
栈:0
1入栈,发现不单调,0下标需要出栈,又因为0已经最左边位置了,所以0的左边应该想想一个-1下标:更新答案{1-(-1)-1}*a[0]=2
栈:1
5入栈
栈:1,2
6入栈
栈:1,2,3
2入栈,发现不单调,3下标需要出栈,所以更新答案:{4-2-1}*a[3]=6,2下标也需要出栈,更新答案:{4-1-1}*a[2]=10
栈:1,4
3入栈
栈:1,4,5
开始出栈:
5下标先出栈,更新答案:{6-4-1}*a[5]=3,4下标再出栈,更新答案:{6-3-1}*a[4]=4,1下标再出栈,更新答案:{6-(-1)-1}*a[1]=6
综上:答案为10.