1. 程式人生 > >給定一個非負整數陣列,最初定位在陣列的第一個索引處。組中的每個元素表示您在該位置的最大跳躍長度。求最小跳數

給定一個非負整數陣列,最初定位在陣列的第一個索引處。組中的每個元素表示您在該位置的最大跳躍長度。求最小跳數

本題源自leetcode  45

-------------------------------------------------------------------------

思路:用倆個 變數標識當前的位置  和 下一步能調到最遠的位置。

程式碼:

 int jump(vector<int>& nums) {
        int n = nums.size();
        if(n <= 1)
            return 0;
        int cur = nums[0];  //當前跳到的最遠距離
        int next = nums[0]; //下一步能跳到的最遠距離
        int step = 1;
        for(int i = 1; i< n; i++){
            if(cur < i){
                cur = next;
                step++;
            } 
            if(i + nums[i] > next){
                next = i + nums[i];
            }
            if(cur >= n-1)
                return step;
        }
        return 0;
    }