1. 程式人生 > 其它 >leetcode 跳躍遊戲 中等

leetcode 跳躍遊戲 中等

本來是用陣列標記當前位置時候能夠達到,然後表示的從後往前標記,如果發現某個點被標記過了,那麼前面點也肯定被標記了,就直接 continue。

然後發現,陣列根本沒有存在的必要,直接優化掉,維護可達到的最遠位置即可。

//class Solution {
//public:
//    bool canJump(vector<int>& nums) {
//        vector<bool> tag(nums.size(), false);
//        tag[0] = true;
//        for(int i = 0; i < nums.size(); ++ i) {
// if(!tag[i]) return false; // for(int j = i + nums[i]; j > i; -- j) { // if(tag[j]) continue;; // tag[j] = true; // } // } // return tag.back(); // } //}; class Solution { public: bool canJump(vector<int>& nums) {
int maxIdx = nums[0]; for(int i = 1; i < nums.size(); ++ i) { if(maxIdx < i) return false; maxIdx = max(maxIdx, i + nums[i]); } return maxIdx >= (int)nums.size() - 1; } };