単調スタック(Monotonic Stack)とは 単調スタックという単語は勝手に作りました。 英語ではMonotonic Stackというらしいのですがそれに相当する日本語がなさそうだったのでそれっぽいものを勝手に使用。 定義は下記になります。 実はこれは蟻本の「4-4 頻出テクニック2」の「スタックの利用」というセクションに説明されています。 なぜこれが便利なのか これは主に配列Aにおいてある要素A[i]の値よりも前(j<i)にあるより小さい最初の値(A[j])を効率的に見つけるときに使われる 例えば、下記配列Aの4よりも前にある小さい値は3。 このようにある要素よりも前にあるより小さい要素のインデクスの配列をPとするとPは下記のようになる。(存在しない場合は-1とする)