Min Stack(最小値を取得できるスタック)

Min Stack(最小値を取得できるスタック)とは

通常のStack操作に加え、現在の最小値を定数時間で取得できるStackを設計する課題です。

操作を高速にするため、更新時に補助情報を保持する設計を学べます。

判断するときに確認すること

  • pushとpop後の最小値が正しいか
  • 同じ最小値が複数ある場合を扱えるか
  • 各操作の計算量を説明できるか

具体例で整理する

避けたい判断

最小値を取得するたびにStack全体を走査する。

条件が分かる判断

値と現在の最小値のペアをStackへ積む。

設計とレビューで使う

このページの推奨は次のとおりです。

各要素と、その時点までの最小値を一緒に積む。