思路:貪心演算法,每次記錄可以跳到的最遠距離。
要理解這個演算法,首先明白,這個題只要我們求跳數,怎麼跳,最後距離是多少,都沒讓求的。
大牛這個演算法的思想主要是,掃瞄陣列(廢話。。。),以確定當前最遠能覆蓋的節點,放入curr。然後繼續掃瞄,直到當前的路程超過了上一次算出的覆蓋範圍,那麼更新覆蓋範圍,同時更新條數,因為我們是經過了多一跳才能繼續前進的。形象地說,這個是在爭取每跳最遠的greedy。
class solution
cur = max(cur, i+nums[i]); //當前可以跳到的最大範圍,貪心演算法
}return res;}};
這道題讓我們明白乙個道理:
不要做無必要的計算。
對了,有同學會問,那為啥要用last,直接用cur跳不就行了。直接用cur跳那每次都是跳最遠的,但是最優路徑不一定是這樣。