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

2021-08-21 06:45:05 字數 857 閱讀 8557

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

判斷你是否能到達陣列的最後乙個位置。

分析:方法一:基於動態規劃的做法,時間複雜度o(n^2)。陣列dp[i]表示能否到達下標為i的位置,對於從下標i=1開始的每乙個位置,都從下標j=0開始到i-1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的位置,如果能,則令dp[i]=true,並退出j的迴圈。最後只需要看dp[a.length-1]即能否達到陣列最後乙個位置。

public boolean canjump(int a) }}

return dp[a.length-1];

}

方法二:基於貪心策略,時間複雜度為o(n)。用farthest儲存當前能到達的最遠位置,遍歷陣列,如果當前位置小於等於最遠能到的位置(即可達)且從當前位置出發能到達的最遠位置大於等於當前的farthest,那麼更新farthest。最後判斷farthest是否大於等於陣列長度即可。

if(a==null || a.length==0) return false;

int farthest=a[0]; //下標為0位置所能到的最遠的位置, farthest一直儲存當前能到的最遠位置

for(int i=1;i=farthest)

}return farthest>=a.length-1; //最後看最遠距離能否超過陣列長度

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

你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。

public int jump(int a) }}

return step[a.length-1];

}

lintcode 跳躍遊戲 II

跳躍遊戲 ii 給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。樣例 給出陣列a 2,3,1,1,4 最少到達陣列最後乙個位置的跳躍次數是2 從陣列下標0跳一步到陣列下標1,然後跳3步到陣列的...

lintcode117 跳躍遊戲 II

陣列中的每個元素代表你在那個位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。最少到達陣列最後乙個位置的跳躍次數是2 從陣列下標0跳一步到陣列下標1,然後跳3步到陣列的最後乙個位置,一共跳躍2次 思路 1.動態規劃 o n 2 如果當前位置i可由j位置到達,那麼i位置的跳躍...

lintcode116 跳躍遊戲 深度搜尋

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