算法-跳跃游戏II

算法-跳跃游戏II

跳跃游戏II

跳跃游戏II也是Leetcode上一道经典的题目,难度为hard,其实可以暴力求解,思路是使用两个指针,第一个指针指向初始位置,第二个指针指向i+nums[i]位置,在两个指针间的窗口中,选择一个nums[k]+k最大的值作为要跳跃的位置。时间复杂度是O(N),很符合我们的直观。

不过我们采用另一种O(N)的算法来解决这个问题

public int jump(int[] nums) {
	int maxPos=0;
	int bound=0;
	int miniStep=0;
	for(int i=0;i<nums.length;i++){
		//这里完成的就是暴力求解中的寻找跳跃点的操作了
		//不过我们不需要直接跳,我们只负责记录步数就行了
		maxPos=Math.max(maxPos,nums[i]+i);
		if(i==bound){
			bound=maxPos;
			miniStep++;
		}
	}
	return miniStep;
}
发布了28 篇原创文章 · 获赞 9 · 访问量 2411

猜你喜欢

转载自blog.csdn.net/qq_23594799/article/details/105130836