# 【LeetCode】 45. Jump Game II
## Description
> Given an array of non-negative integers, you are initially positioned at the first index of the array.
> Each element in the array represents your maximum jump length at that position.
> Your goal is to reach the last index in the minimum number of jumps.
> 給一非負整數陣列,你一開始在陣列起始的位置。
> 陣列中的每個元素,代表你在這一格最遠可以跳多遠。
> 你的目標是跳到陣列的最後一格,請找出你最少只需要跳幾次。
## Example:
```
Example:
Input: [2,3,1,1,4]
Output: 2
Explanation: The minimum number of jumps to reach the last index is 2.
Jump 1 step from index 0 to 1, then 3 steps to the last index.
```
## Solution
* 使用**貪婪法**,只在乎當下最遠可以到哪裡。
* 去紀錄、計算當下最遠可以到哪裡,如果你可以到第`i`格,代表你有能力可以到`0~i`的任何一格。
* 如果你已經在第`i`格,你下次就可以到`i+nums[i]`格。利用這點去不停更新最遠距離。
* 記住,不要去重複的格子試圖更新最遠距離,因為每一格提供給你的距離是固定的,因此計算過的格子就應該跳過。
* 我下面的code利用`last`去紀錄上一次更新到哪裡。
### Code
```C++=1
class Solution {
public:
int jump(vector<int>& nums) {
int step=0;
int count=0;
int next=0;
int last=0;
for(;step<nums.size()-1;count++)
{
for(int i=last;i<=step;i++)
{
if(i+nums[i]>next)
{
next=i+nums[i];
}
}
last=step;
step=next;
}
return count;
}
};
```
###### tags: `LeetCode` `C++`