题目:45. 跳跃游戏 II
思路:在当前桥上,选可以到最远的点来换桥。
C++版本:
class Solution {
public:
int jump(vector<int>& nums) {
int border=0;//当前桥的右端
int mx=0;//可选桥的右端最大值
int ans=0;//跳桥的次数
for(int i=0;i<nums.size()-1;i++){
//维护:可选桥的右端最大值
mx=max(mx,i+nums[i]);
//遍历完当前桥的所有点,该跳桥了
if(i==border){
ans++;
border=mx;
}
}
return ans;
}
};
JAVA版本:
class Solution {
public int jump(int[] nums) {
int border=0;
int mx=0;
int ans=0;
for(int i=0;i<nums.length-1;i++){
mx=Math.max(mx,i+nums[i]);
if(i==border){
ans++;
border=mx;
}
}
return ans;
}
}