一般求最大值都需要浏览栈中的所有值,我们可以使用空间复杂度换取时间复杂度。
使用两个栈,一个栈用来存放push的数据,另一个栈用来存放最大值的索引,还需要一个整数变量存放当前最大值的索引;求最大值的时候,直接根据索引在数据栈中取出最大值;存值的时候,如果新进来的数据比前一个数据大,那么索引栈当前存放前一个最大值的索引,否则置为-1,变量存放当前最大值的索引;取值的时候,如果出去一个数据的索引等于当前最大值的索引,那么把前一个最大值的索引的值赋给整数变量。
一般求最大值都需要浏览栈中的所有值,我们可以使用空间复杂度换取时间复杂度。
使用两个栈,一个栈用来存放push的数据,另一个栈用来存放最大值的索引,还需要一个整数变量存放当前最大值的索引;求最大值的时候,直接根据索引在数据栈中取出最大值;存值的时候,如果新进来的数据比前一个数据大,那么索引栈当前存放前一个最大值的索引,否则置为-1,变量存放当前最大值的索引;取值的时候,如果出去一个数据的索引等于当前最大值的索引,那么把前一个最大值的索引的值赋给整数变量。