【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数。

例如,对于数组 [2,3,1,2,4,2,3],初始位置是下标 0,从下标 0 出发,最远可到达下标 2。下标 0 可到达的位置中,下标 1 的值是 3,从下标 1 出发可以达到更远的位置,因此第一步到达下标 1。

从下标 1 出发,最远可到达下标 4。下标 1 可到达的位置中,下标 4 的值是 4 ,从下标 4 出发可以达到更远的位置,因此第二步到达下标 4。

在具体的实现中,我们维护当前能够到达的最大下标位置,记为边界。我们从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1。

在遍历数组时,我们不访问最后一个元素,这是因为在访问最后一个元素之前,我们的边界一定大于等于最后一个位置,否则就无法跳到最后一个位置了。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。

作者:力扣官方题解

代码:

cpp 复制代码
int jump(int* nums, int numsSize) 
{
	int max = 0;
	int i = 0,steps = 0;
    int end=0;
	
	for (i = 0; i < numsSize-1; i++)
	{	
			max = max < (nums[i] + i) ? (nums[i] + i) : max;//最远能到达的位置
			if (i==end)
			{
				end = max;
                steps++;
			}
    
	}
    return steps;
}
相关推荐
Non importa15 分钟前
【初阶数据结构】树——二叉树(上)
c语言·数据结构·学习·算法
Tech Synapse2 小时前
基于Surprise和Flask构建个性化电影推荐系统:从算法到全栈实现
python·算法·flask·协同过滤算法
汤姆_5112 小时前
【c语言】深度理解指针4——sizeof和strlen
c语言·开发语言
終不似少年遊*2 小时前
国产之光DeepSeek架构理解与应用分析04
人工智能·python·深度学习·算法·大模型·ds
天天扭码2 小时前
一分钟解决 | 高频面试算法题——最大子数组之和
前端·算法·面试
杰杰批2 小时前
力扣热题100——矩阵
算法·leetcode·矩阵
明月看潮生3 小时前
青少年编程与数学 02-016 Python数据结构与算法 28课题、图像处理算法
图像处理·python·算法·青少年编程·编程与数学
_GR3 小时前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
心想事“程”3 小时前
决策树详解+面试常见问题
算法·决策树·机器学习
照海19Gin4 小时前
数据结构中的宝藏秘籍之广义表
c语言·数据结构·算法