55 45 Jump Game 跳躍遊戲

2021-08-03 21:13:37 字數 789 閱讀 4143

思路:貪心演算法,每次記錄可以跳到的最遠距離。

要理解這個演算法,首先明白,這個題只要我們求跳數,怎麼跳,最後距離是多少,都沒讓求的。

大牛這個演算法的思想主要是,掃瞄陣列(廢話。。。),以確定當前最遠能覆蓋的節點,放入curr。然後繼續掃瞄,直到當前的路程超過了上一次算出的覆蓋範圍,那麼更新覆蓋範圍,同時更新條數,因為我們是經過了多一跳才能繼續前進的。形象地說,這個是在爭取每跳最遠的greedy。

class solution 

cur = max(cur, i+nums[i]); //當前可以跳到的最大範圍,貪心演算法

}return res;}};

這道題讓我們明白乙個道理:

不要做無必要的計算。

對了,有同學會問,那為啥要用last,直接用cur跳不就行了。直接用cur跳那每次都是跳最遠的,但是最優路徑不一定是這樣。