題目描述:
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
示例 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 ...