还是以样例为例,[2,3,1,1,4],起点是 nums [0] = 2,那么在 nums [1] = 3 和 nums [2] = 1 中我们应该选择哪个进行跳跃?很明显,应该选择 nums [1] = 3,因为他的数值大,这样跳跃的范围就大。所以这道题的贪心规律就是:当前你在 nums [i],下一步所跳的位置应该是 nums [i] 中范围内,数值最大的
- class Solution {
- public:
- int jump(vector<int>& nums) {
- if(nums.size() < 2)
- return 0;
- int current_max_index = nums[0];
- int pre_max_index = nums[0];
- int jump_min = 1;
- for(int i = 1;i < nums.size();i++){
- if(i > current_max_index){
- jump_min++;
- current_max_index = pre_max_index;
- }
- if(pre_max_index < nums[i] + i)
- pre_max_index = nums[i] + i;
- }
- return jump_min;
- }
- };