给定一个长度为
第一行包含整数
第二行包含
共一行,包含
5
3 4 2 7 5
-1 3 -1 2 2
前置题目:0829
前置知识:栈
本题知识:数据结构-单调栈
要求:找出每个数左边第一个比它小的数 input[j]
可以维护一个栈stack,将可能满足要求的值按下标顺序保存在栈中
重要性质:
任取 i < j, stack[i] 必然小于 stack[j], (反证法)因为若 stack[i] >= stack[j], stack[i]永远无法被取到,因为存在比他的值小却比他更近的 stack[j]。
所以每次找的时候从栈顶向下找即可。例子如下:
栈顶指向0时定义为栈空