貪心
每一步都挑選下一步能達到的最遠距離。
2,3,1,1,4
1 2 3 4 5
以下數字指代下標1-5.
第一次可以跳到下標2或者3,如果跳到2,下一步最遠可以跳到5,如果跳到3,下一步只能跳到4,所以這一次選擇跳到2。
如果某一步的最遠距離跨過了5或者到達了5,說明可以跳到終點。本題已經說了肯定可以跳到終點,那就只要按照上述過程算出跳的次數就好了。
end代表某一步跳的範圍,比如剛在1上就是3,到了3之後就更新為5,end更新的次數就是跳躍的次數。
maxpos代表某個範圍內結點所能到達的最遠距離,每次更新end就用maxpos去更新。比如2對應的範圍maxpos就是5,所以到達2對應的end,也就是3的時候,用5去更新end。
小細節:end最初設為0,所以相當於增加了一次跳到第乙個結點的跳躍。所以應該減去這次跳躍。如果最後的end大於了陣列的末尾,那最後的那次跳躍就不會增加,如果end剛好在陣列的末尾,那就會增加一次跳躍。因為題目說了肯定會達到,那麼可以分為跳到4,再跳到5或者之後,或者不跳到4,直接跳到5或者之後。這樣把終點設為4,就能解決這個問題了。
#include
class
solution
}return step;}}
;
45 跳躍遊戲 II
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
45 跳躍遊戲 II
題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後...
45 跳躍遊戲 II
題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後...