题目描述:
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
本题首先需要一个思路,就是当前位置的元素保存的为可跳步长,如果能到尾巴,则直接结束,如果不能直接到
则需要寻找当前步长内可到达的最有利位置 什么是最有利位置呢 就是从当前位置到那个位置需要跳的长度 加上 那个位置的可跳步长(也就是那个位置的元素大小)
java代码实现:
class Solution {
public int jump(int[] nums) {
if(nums.length == 0 || nums.length == 1){
return 0;
}
if(nums[0] >= nums.length-1){
return 1;
}
int count = 0;
int numjump = 0;
int nextjump = 0;
while(nums[numjump]+numjump < nums.length-1){
if(nums[numjump] == 1){
numjump += 1;
count += 1;
continue;
}
int max = 0;
for(int i = numjump+1;i <= nums[numjump]+numjump;i++){
if(max < nums[i]+i-numjump){
nextjump = i;
max = nums[i]+i-numjump;
}
}
count += 1;
numjump = nextjump;
}
return count+1;
}
}
首先需要理清思路,然后编写代码时要细心,经常有元素和索引的思维转换