leetcode-55 跳跃游戏
生活随笔
收集整理的這篇文章主要介紹了
leetcode-55 跳跃游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個非負整數數組,你最初位于數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最后一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然后再從位置 1 跳 3 步到達最后一個位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 ,所以你永遠不可能到達最后一個位置。
即挨著跳躍,并維護一個能跳到最遠的值;每跳一次,更新一次該值。
如果發現了跳躍的次數大于能夠跳到最遠的值,說明終點不可達
實現如下(大佬實現—牛逼)
bool canJump(vector<int>& nums) {int k = 0;for (int i = 0; i < nums.size(); i++){if (i > k) return false;k = max(k, i + nums[i]);}return true;
}
我的實現:
bool canJump(vector<int>& nums) {if (nums.size() == 0) {return true;}int jump = 0;int max_index = nums[0];while(jump < nums.size()) {if (jump > max_index) {return false;}if (nums[jump] + jump > max_index) {max_index = nums[jump] + jump;}jump ++;}return true;
}
總結
以上是生活随笔為你收集整理的leetcode-55 跳跃游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30级 医药箱 战斗力12518 正常吗
- 下一篇: 拍艺术照多少钱啊?