题目描述
塔子哥最近做了一笔大生意,他想要给每位员工分配一些奖金,但是塔子哥不想直接发放给他们,他想通过游戏的方式来决定每个人分多少钱。
题目思路
很容易的思路是 n2 的解法,直接往后寻找第一个比当前值大的元素再进行计算就行,但是我们可以有一个更好的解决方法,即维护一个单调栈。
我们维护一个递减的单调栈,方法为每次碰到一个元素时判断该元素是否大于栈顶元素,如果大于,则将栈里面比当前元素小的元素全部弹出(这里
我们记录的是元素的下标),弹出的这些元素的第一个比它大的元素就是当前元素。计算即可。时间复杂度优化至O(n)。
代码