Q: リンクされたリストを元に戻すにはどうすればよいですか?
- 答え: リンクされたリストを反転するには、リストが最後の要素から始まり、最初の要素で終わるようにポインタの方向を変更する必要があります。
- 例:
入力: 1 -> 2 -> 3 -> 4 ->ヌル
出力: 4 -> 3 -> 2 -> 1 -> null
Q: ソートされた配列に対して二分検索を実行するにはどうすればよいですか?
- 答え: 二分探索では、配列を繰り返し半分に分割し、中央の要素がターゲットと一致するかどうかを確認します。
- 例:
入力: 配列 [1、3、5、7、9]、ターゲット = 7
出力: 3 (7 のインデックス)
- 解決策のアプローチ: 中央の要素を確認します。ターゲットの場合はインデックスを返します。ターゲットが小さい場合は左半分を検索します。それより大きい場合は、右半分を検索します。
Q: 文字列内の最初の一意の文字はどのように見つけますか?
- 答え: 最初の一意の文字を見つけるには、各文字の出現を数え、一度だけ出現する最初の文字を特定します。
- 例:
入力:「スイス」
出力: "w"
- 解決策のアプローチ: ハッシュ マップを使用して各文字の頻度を保存し、文字列を反復処理してカウント 1 の最初の文字を見つけます。
Q: リンクされたリスト内のサイクルをどのように検出しますか?
- 答え: リンクされたリスト内のサイクルを検出するには、2 つのポインター (低速と高速) を使用します。サイクルがある場合、高速ポインタは最終的に低速ポインタに遭遇します。
- 例:
入力: 1 -> 2 -> 3 -> 4 -> 2(サイクル)
出力: True (サイクルが存在します)
- アプローチ: フロイド周期検出アルゴリズムを使用します。高速ポインタを 2 ステップ移動し、低速ポインタを 1 ステップ移動します。彼らが会えば、サイクルが生まれます。
以上がDSA 面接で最もよく聞かれる質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。