192 跳躍遊戲

2021-09-25 20:08:44 字數 1177 閱讀 9882

題目描述:

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。

陣列中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後乙個位置。

示例 1:

輸入: [2,3,1,1,4]

輸出: true

解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後乙個位置。

示例 2:

輸入: [3,2,1,0,4]

輸出: false

解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。

首先從下標為0的位置開始,max表示的能夠到達的最大長度,start表示的是當前索引能夠達到的距離,每次我們對start進行迴圈,找出下乙個能夠到達的最大max,然後對比temmax和max,如果相等表示不能到達,返回false

class solution 

int start = nums[0];

if (start == 0)

if(start >= nums.length - 1)

// 當前位置能夠到達的深度

int max = start;

int index = 0;

int temmax = 0;

int temindex = 0;

while (start != 0)

max = temmax;

index = temindex + 1;

int temstart = 0;

while (start > 0)

if(temmax <= index + nums[index])

index ++;

start --;

}start = temstart;

} return false;

}}

當然我們可以從最後乙個慢慢向前拓展,比如看能夠到達最後乙個的最靠前的下標是哪乙個,然後更新到最前的那個

**:

class solution 

for (int i = end - 1; i >= 0; i--)

if(nums[i] + i >= end)

}return false;

}}

是不是很簡單了,而且速度也很快。

LintCode 跳躍遊戲 I VS跳躍遊戲 II

陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。分析 方法一 基於動態規劃的做法,時間複雜度o n 2 陣列dp i 表示能否到達下標為i的位置,對於從下標i 1開始的每乙個位置,都從下標j 0開始到i 1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的...

LintCode Jump Game 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。樣例 a 2,3,1,1,4 返回 true.a 3,2,1,0,4 返回 false.注意 這個問題有兩個方法,乙個是貪心和 動態規劃。貪心方法時間複雜度為o...

跳躍遊戲二

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。你的目標是到達最後乙個下標,並且使用最少的跳躍次數。例如 a 2,3,1,1,4 a 2,3,1,1,4 a 2,3 1,1 4 到達最後乙個下標的最少跳躍次數為 22 2。先跳躍 11 1 ...