ホームページ >Java >&#&チュートリアル >Javaを使用して到達するための最小ジャンプ数

Javaを使用して到達するための最小ジャンプ数

DDD
DDDオリジナル
2025-02-07 12:02:14142ブラウズ

Minimum number of jumps to reach end using Java

このJavaコードは、各要素がその位置からの最大ジャンプ距離を表す配列を通過するために必要な最小ジャンプを計算します。 アルゴリズムとコードを段階的に調べてみましょう。目標は、インデックス0から始まるアレイの終わりに到達するために必要な最も少ないジャンプを見つけることです。終了が到達できない場合、関数は-1。

問題定義: アレイが与えられている

arr[]arr[i]アルゴリズム:

アルゴリズムは貪欲なアプローチを採用しており、配列を介して反復し、各ステップで最も遠い到達可能なインデックス()を追跡します。 各ジャンプ内の進捗を追跡するために

カウンターと

を維持します。 maxReach jumps steps

初期化:
  1. :ジャンプの総数をカウントします。 0に初期化されています。

    • :現在の位置から到達可能な最も遠いインデックス。 jumps
    • に初期化されています
    • maxReach:現在のジャンプ内に残っているステップ数。 arr[0]
    • に初期化されています
    • steps arr[0]
    反復:
  2. コードは配列を介して繰り返します。 各要素について

    • 更新
    • 最大arr[i]および
        (現在の位置から最も遠い到達可能なインデックス)。
      • decrement maxReach(1つのステップを踏みました)。maxReach i arr[i] が0になった場合、現在のジャンプのステップを使い果たしたことを意味します。 したがって、
      • 増分steps
      • steps
          以下である場合、それは私たちが行き詰まっていて、さらに到達できないことを意味します。 return -1。
        • jumpsreset
        • to
        • (次のジャンプの残りの手順)。maxReach i
        • steps maxReach - i
      終了:
  3. ループが-1を返さずに完了した場合、端に到達可能になることを意味します。 関数は

    を返します

    • jumpsjavaコード:

時間と空間の複雑さ:

  • 時間の複雑さ:o(n)、nは配列の長さです。 コードは、配列を1回繰り返します。
  • スペースの複雑さ: o(1)、アルゴリズムは一定の余分なスペースを使用しているためです。
この改善された説明とコードは、アルゴリズムとその実装のより明確な理解を提供します。 追加されたコメントは読みやすさを向上させ、エッジケースの処理(空またはシングルエレメント配列)により、コードがより堅牢になります。

以上がJavaを使用して到達するための最小ジャンプ数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。