记录栈中的最小值

看到有人用算法实现了在一个栈中实现最小值,且复杂度保持在O(1)的问题,用Scala实现看看是不是合适.

import scala.collection.mutable.ArrayBuffer

class MinStack {
    private val buffer = new ArrayBuffer[Int]()
    private val sort = new ArrayBuffer[Int]()

    def push(value: Int) :Unit = {
        buffer.append(value)
        val min = if(sort.length > 0) minValue() else 99999
        if(value < min){
            sort.append(buffer.length -1)
        }
    }

    def pop() :Int = {
        val pos = buffer.length - 1
        if(pos == sort.last){
            sort.remove(sort.length - 1)
        }
        buffer.remove(pos)
    }

    def minValue() :Int = {
        return if (sort.length > 0) buffer(sort.last) else 0
    }

    def description() : Unit = {
        println(buffer.mkString("(",",",")"))
        println(sort.mkString("(",",",")"))
    }
}