ArrayDeque
ArrayQueue
のちょっと進化版。先頭にも追加できるし、末尾から削除もできる。
先頭末尾の追加/削除だけの関数を作るのも使い勝手が悪いので、普通に追加/削除の関数を作る。
□□□□□□□■■☆■■■■■■■■■■■■■■□□□□
たとえばこの☆の位置にaddするとき、右側をずらすよりも左側を2つだけずらしたほうが楽。つまり、addしようとしている位置が全体の中心より右側?左側?を先に判定してそっち側をずらすことで高速化が入る。最大でもn/2以下の変更で済む。このやり方だと先頭/末尾についてはO(1)なので、「dequeだな…?」となる。
#データ構造
#みんなのデータ構造