本题题目要求如下:
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.
For example:
Given array A = [2,3,1,1,4]
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.)
于是下限就更新为上一次的上限,上限更新为最远点。。。就这样持续更新,就能得到正确结果,每次更新,步数都要加1。
代码如下所示:
class Solution {
public:
int jump(vector<int>& nums) {
int sz = nums.size();
int max_reach = 0;
int l_bound = 0;
int h_bound = 0;
int cnt = 0;
while (max_reach < sz - 1) {
for (int i = l_bound; i <= h_bound; ++i) {
max_reach = max(max_reach, i + nums[i]);
}
l_bound = h_bound + 1;
h_bound = max_reach;
++cnt;
}
return cnt;
}
};