给定一个长度为n的数组,每个元素的“美好值”是该位置之前最近的、值小于等于当前值的元素,如果没有这样的元素,则美好值为0。最终要求计算所有位置的美好值总和。输入格式为第一行一个整数n,表示数组长度,第二行包含n个整数,表示数组元素。输出为一个整数,表示美好值的总和。
本题题目意思可以转为找到左边第一个比它小的数,因此可以使用单调栈来求解该问题
给一定一个数组,每个位置的美好值是离该位置最近的且下标小于该位置,值小于等于该值的值,若没有则为0。求所有位置的美好值总和。
第一行一个整数n,表示数组长度。(1≤n≤105)
接一行下来n个整数,表示该数组。(1≤a[i]≤105)
输出一个整数,表示美好值的总和
输入
5
2 3 4 1 5
输出
6
说明
0号位置前面没有值,美好值为0
1号位置前面最近小于等于的值为2,美好值为2
2号位置前面最近小于等于的值为3,美好值为3
3号位置前面没有小于等于该值的数,美好值为0
4号位置前面最近小于等于的值为1,美好值为1
总的美好值为2+3+1=6