問題:スタック内の最小値を返すスタッククラスを作成する
カスタムしたクラス内に最小値を保存スタックを持つことで、
簡潔にコードを書くことができます。
pushするときにカスタムスタッククラス内のスタックメンバーの最小値を
チェックし、最小ならばpushする。
popも同様の処理を行うことで、最小値を保持するスタックが完成します。
kotlinでのサンプルを載せます。
import java.util.Stack class StackWithMin : Stack(){ var stack : Stack = Stack() override fun push(value : Int): Int? { if(value < getMin()){ stack.push(value) } return super.push(value) } fun getMin() : Int { if(stack.isEmpty()){ return Integer.MAX_VALUE } else{ return stack.peek() } } override fun pop() : Int{ val value = super.pop() if(value == getMin()){ stack.pop() } return value } }
続いてmain関数での実行例です。
fun main(args : Array){ var stack : StackWithMin = StackWithMin() stack.push(100) stack.push(50) stack.push(1) // 1 println(stack.getMin()) stack.pop() // 50 println(stack.getMin()) stack.pop() // 100 println(stack.getMin()) }
0 件のコメント:
コメントを投稿