1.やさしい
静的配列と動的配列の主な違いは何ですか。
- A静的配列はインデックスによるアクセスが遅い
- B動的配列は要素を連結されたノードに格納するので、1 つずつ拡張できる
- C静的配列は数値しか格納できない
- D動的配列は、より大きなメモリブロックに移ることで拡張できる
2.やさしい
二分木の行きがけ順(preorder)の走査は、どの順序でノードを訪問しますか。
- A上から 1 レベルずつ
- Bノード、次に左部分木、次に右部分木
- C左部分木、次にノード、次に右部分木
- D左部分木、次に右部分木、次にノード
3.やさしい
テキストエディタの「元に戻す」(undo)機能に最も適したデータ構造はどれですか。
- Aキュー
- Bスタック
- Cグラフ
- Dハッシュセット
4.ふつう
二分ヒープに新しい要素はどのように挿入されますか。
- A根に置き、下へ移動させる(sift down)
- B配列の末尾に置き、ヒープ性に反している間は上へ移動させる(sift up)
- Cヒープ全体を一から作り直す
- Dより大きい要素をすべて 1 つ右にずらして、ソートされた位置に挿入する
5.ふつう
あるアプリケーションには高速な検索が必要で、さらにキーをソート順に一覧にしたり、範囲クエリに答えたりする必要もあります。最も適した構造はどれですか。
- Aハッシュテーブル
- Bスタック
- Cソートされていない連結リスト
- D平衡二分探索木
6.ふつう
キーをソート済みの順序で挿入した場合、n 個のノードを持つ二分探索木の最悪の高さはいくつですか。
- An(連結リストのようになる)
- Blog₂ n
- C1
- D√n
7.むずかしい
ブルームフィルタは「この要素は集合に含まれるか」という問いにどのように答えますか。
- A数値に対してのみ答えられる
- B偽陽性はあり得るが、偽陰性はない
- C偽陰性はあり得るが、偽陽性はない
- D常に正確な答えを返す
8.むずかしい
二分ヒープにおける decrease-key(要素の位置が分かっている場合)の時間計算量はどれですか。
- AO(n)
- BO(1)
- CO(log n)
- DO(n log n)
解答
- 1. D · 動的配列は、より大きなメモリブロックに移ることで拡張できる
- 2. B · ノード、次に左部分木、次に右部分木
- 3. B · スタック
- 4. B · 配列の末尾に置き、ヒープ性に反している間は上へ移動させる(sift up)
- 5. D · 平衡二分探索木
- 6. A · n(連結リストのようになる)
- 7. B · 偽陽性はあり得るが、偽陰性はない
- 8. C · O(log n)
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。