DanLevy.net

クイズ: データ構造とアルゴリズム

バイナリツリーをBSできるか?

データ構造とアルゴリズムのクイズへようこそ!

このクイズは、データ構造(スタック、リスト、ツリー等)とアルゴリズム、そして時間計算量に関する知識を評価します。

20問…開始!

LIFO(Last In, First Out)アクセスパターンに最適なデータ構造はどれですか?

スタックはLIFOアクセスパターンに最適です。キューはFIFO(First In, First Out)アクセスパターンに最適です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

アルゴリズムが入力サイズに関係なく常に同じ時間で実行される場合、その時間計算量は何ですか?

O(1) は定数時間計算量を表します。入力サイズに関係なく、アルゴリズムは常に同じ時間で実行されます。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

長さを別途保持していない単方向連結リストで、全ノードを数えて長さを求める時間計算量は何ですか?

単方向連結リストの長さを計算するには、ヘッドからテイルまで全てのノードを走査する必要があり、時間計算量は O(n) になります。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

バランスの取れた二分探索木で要素を検索する際の平均時間計算量は何ですか?

バランスの取れたBSTでは、各レベルで探索空間が半分になるため、検索の平均時間計算量は O(log n) です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

最悪の場合のマージソートアルゴリズムの時間計算量は何ですか?

マージソートは常に最悪ケースで O(n log n) の計算量で動作します。配列を半分に分割し、ソート済みの部分配列をマージすることを繰り返すためです。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

幅優先探索(BFS) を実装する際に通常使用されるデータ構造は何ですか?

BFS はキューを使用してノードをレベルごとに探索し、幅優先(「行」単位)でノードを処理します。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

再帰スタック上にまだ残っている頂点への辺を見つけることで、有向グラフのサイクルを検出する走査はどれですか?

深さ優先探索(DFS)は、訪問したノードを追跡するために再帰スタックを保持することで、グラフ内のサイクルを検出する際に一般的に使用されます。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

最悪の場合のヒープソートの時間計算量は何ですか?

ヒープソートはヒープを構築し、最大要素を繰り返し取り出すことで、最悪ケースでも O(n log n) の時間計算量を保ちます。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

ハッシュテーブルで要素にアクセスする際の平均時間計算量は何ですか?

ハッシュテーブルは、衝突を最小限に抑える優れたハッシュ関数を前提とすれば、要素へのアクセスの平均時間計算量は O(1) です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

スタックで実行される典型的な操作はどれですか?

スタックの主要な操作は Push(要素を追加)、Pop(要素を削除)、そして Peek(要素を削除せずにトップを参照)です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

通常は優先度キューを使い、未確定頂点の中から暫定距離が最小の頂点を繰り返し選ぶ、単一始点の貪欲な最短経路アルゴリズムはどれですか?辺の重みは非負とします。

ダイクストラ法は、非負のエッジ重みを持つグラフで最短経路を求める際に頻繁に使用されます。優先度キューを利用して、最短距離を効率的に算出します。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

自己平衡二分探索木の例が含まれるセットはどれですか?

AVL木 と 赤黒木 は自己平衡木の一種で、挿入や削除のたびに木がバランスを保つようにします。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

再帰関数で無限再帰を防ぐために何を定義する必要がありますか?

再帰関数では、特定の条件が満たされたときに再帰呼び出しを停止させ、無限再帰を防ぐために基本ケースが必要です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

キューの主要な2つの操作は何ですか?

キューの主要な2つの操作はエンキュー(要素を末尾に追加する)とデキュー(要素を先頭から削除する)です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

グラフでトポロジカルソートを実行する条件は何ですか?

グラフが有向非循環(DAG)である場合にトポロジカルソートを実行できます。この順序付けはタスクスケジューリング問題で役立ちます。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

フィボナッチ数列の単純な再帰実装の時間計算量は何ですか?

フィボナッチ数列の単純な再帰実装は、各フィボナッチ数に対して膨大な繰り返し計算が行われるため、時間計算量は O(2^n) です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

優先度キューを実装する際に一般的に使用されるデータ構造はどれですか?

優先度キューは、最高または最低の優先度の要素を効率的に取り出せるため、通常ヒープを使って実装されます。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

二分木の深さ優先走査で一般的な順序を列挙しているのはどれですか?

中順、前順、後順は二分木における代表的な深さ優先走査の3つの順序で、ノードの訪問順序がそれぞれ異なります。幅優先走査も一般的ですが、別の走査カテゴリです。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

次のうち、最小ヒープに当てはまる性質はどれですか?

最小ヒープでは、根は常に最小要素であり、木の高さは O(log n) になるため、挿入と抽出が効率的です。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。

左のキーが右のキーより厳密に大きい場合だけ隣接要素を交換する、標準的なバブルソートは安定ですか?

この比較条件では等しいキーを持つ要素同士を追い越して交換しないため、バブルソートは安定です。等しいキーも交換する実装では、その性質が失われることがあります。

構造の名前だけでなく、アクセスの順序に注目してください。最初または最後に何を処理する必要があるかを考えましょう。