LeetCode 45. 跳躍遊戲 II

畫船聽雨發表於2018-07-07

題目描述

這裡寫圖片描述

解題思路

貪心解法

從起點開始找到他能到達的點中,可以跳的最遠的點。舉個例子,起點是sx,可以到達位置s1, s2,其中s1可以跳step1,s2可以跳step2,那麼取s1+step1,s2+step2中的最大值,代表可以下一跳可以到達的最遠的地方。依次貪心,保證最後結果最優。

程式碼實現

class Solution {
public:
    int jump(vector<int>& nums) {
        int n = nums.size();
        if(n == 1)
            return 0;
        int l = nums[0];
        int start = 0;
        int sum = 1;
        int Max = 0;
        while(l < n-1)
        {
            for(int i = start+1; i <= l && i < n; i++)
            {
                if(nums[i]+i > Max)
                {
                    Max = nums[i]+i;
                    start = i;
                }
            }
            l = Max;
            sum++;
        }
        return sum;
    }
};

相關文章