フェイス質問
この質問は理解しやすい、非常にシンプルな直面しています。非負基与え、各要素は、格子とみなすことができます。各要素の値がジャンプすることができ、グリッド電流の数を表し、グリッドかどうか最終的な決意に到達することができます。
サンプル
入力:[ 2、3、1,1、4 ] 出力:真の 説明:最後のインデックスに、次いで、1〜3つの手順をインデックス0から1つのステップをジャンプ。入力:[ 3、2、1,0,4] 出力:偽の 説明:あなたはいつもどんなインデックス3に到着しません。その最大 ジャンプ長さは、それが不可能な最後のインデックスに到達することができた、0です。
アルゴリズム
限り、最終的に到達する経路があるとして、それを説明します。私たちは、限りがあり、フロントとして、背面から前方に見ることができる要素のインデックスに加えて、その要素の値がより大きいターゲット要素インデックス値格子に代わって、前回の目標グリッドからジャンプすることができます。限り、我々は、配列が頭を表しまで、グリッドの前のターゲットグリッドが更新されることを条件に、前方にスライドするから裁判官を満たすために前方に移動すると、通過することができ、そうでない場合は、行き止まりに。
アレイを介してフラッシュバック、アレイは標的テールとして定義され、要素の値は、インデックス値+>が標的決定されますか?ターゲット=インデックス:無治療。
便宜終了、= 0真:?偽決意対象
評価します
時間計算量:O(n)は、プライマリアレイを横断する必要があります。
宇宙複雑:O(1)
ソース
1 クラスソリューション{ 2 公共: 3 ブール canJump(ベクトル< INT >&NUMS){ 4 INT LEN = nums.size()。 5 あれば(LEN <= 1 ) 6 リターン 真。 7 8 int型のターゲット= LEN - 1 。 9 用(int型 I =標的- 1 ; I> = 0 ; i-- ) 10 { 11 であれば(NUMS [I] + I> = ターゲット) 12 ターゲット= I; 13 } 14 15 リターン目標== 0 。 16 } 17 }。