Leetcode 45 跳躍遊戲 II (貪心+數學)

45. 跳躍遊戲 II

給定一個非負整數數組,你最初位於數組的第一個位置。

數組中的每個元素代表你在該位置可以跳躍的最大長度。

你的目標是使用最少的跳躍次數到達數組的最後一個位置。

示例:

輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最後一個位置的最小跳躍數是 2。
     從下標爲 0 跳到下標爲 1 的位置,跳 1 步,然後跳 3 步到達數組的最後一個位置。

說明:

假設你總是可以到達數組的最後一個位置。

思路:維護每個點能到的最大值的數組,求出這個數組的最大值數組,然後模擬即可

class Solution {
public:
    int jump(vector<int>& nums) {
        vector<int>ans(nums.begin(),nums.end()),maxx(nums.size());
        for(int i=0;i<nums.size();i++)
        {
            ans[i]+=i;
            if(i>=1)maxx[i]=max(maxx[i-1],ans[i]);
            else maxx[i]=ans[i];
        }
        int cnt=0;
        for(int i=0;i<nums.size()-1;)
        {
            cnt++;
            i=maxx[i];
        }
        return cnt;

        
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章