贪心算法很简单:跳跃游戏
生活随笔
收集整理的這篇文章主要介紹了
贪心算法很简单:跳跃游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ?題目描述:
定一個非負整數數組,你最初位于數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最后一個位置。
示例?1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然后再從位置 1 跳 3 步到達最后一個位置。
示例?2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最后一個位置
?
思路:貪心算法,每次找到可跳內的數組值的最大值,看通過這個最大值能否跳到尾部。不能跳到尾部,則選取最大的值跳。然后重復上述操作。
class Solution { public:bool canJump(vector<int>& nums) {int n = nums.size();int rightmost = 0; //最遠可以到達的地方//遍歷數組for (int i = 0; i < n; ++i) {if (i <= rightmost) {//如果較大值可以到達,則說明可以到達rightmost = max(rightmost, i + nums[i]);if (rightmost >= n - 1) {return true;}}}return false;} };?
參考地址:https://leetcode-cn.com/problems/jump-game/solution/tiao-yue-you-xi-by-leetcode-solution/
總結
以上是生活随笔為你收集整理的贪心算法很简单:跳跃游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超经典动态规划题:最大子序和
- 下一篇: 动态规划面试常考:最短路径和