最小跳跃次数

青蛙从位置0出发,数组 nums[i] 表示在位置 i 最多可跳 nums[i] 步,求到达末位的 ‌最少跳跃次数‌。

答案:

cpp 复制代码
int testJump2(vector<int>& nums) { // 最小跳跃次数。青蛙从位置0出发,数组 nums[i] 表示在位置 i 最多可跳 nums[i] 步,求到达末位的 ‌最少跳跃次数‌。
	vector<int> vec(nums.size(), 0); // vec[i]表示到达i位置的最少跳跃次数

	for (int i = 1; i < nums.size(); i++) {
		bool init = false;
		for (int j = 0; j < i; j++) {
			if (j + nums[j] >= i) {
				// 即从j索引处能1步就跳到i索引处
				if (!init) {
					vec[i] = vec[j] + 1;
					init = true;
				}
				else if (vec[j] + 1 < vec[i]) {
					vec[i] = vec[j] + 1;
				}
			}
		}
	}
	return vec.back();
}

测试:

cpp 复制代码
int main() {
    vector<int> vec{ 2, 3, 1, 1, 4 };
    std::cout << std::format("testJump2, res: {0}", testJump2(vec)) << std::endl;
}

运行:

ok.

相关推荐
weixin_649555671 天前
C语言程序设计第四版(何钦铭、颜晖)第八章指针之循环后移
c语言·c++·算法
_饭团1 天前
C语言数组全解析:从入门到精通
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
地平线开发者1 天前
征程 6 | 多阶段模型量化&debug 简介
算法·自动驾驶
快乐柠檬不快乐1 天前
C++中的代理模式实现
开发语言·c++·算法
月明长歌1 天前
【码道初阶-Hot100】LeetCode 560. 和为 K 的子数组:从前缀和到哈希计数,彻底讲透为什么“统计前缀和”就等价于统计子数组个数
算法·leetcode·哈希算法
tankeven1 天前
HJ134 1or0
c++·算法
keep intensify1 天前
寻找重复数
数据结构·算法·leetcode
dgfhf1 天前
高性能计算资源调度
开发语言·c++·算法
x_xbx1 天前
LeetCode:19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
weixin_307779131 天前
OpenClaw-CN 安全增强方案:从理念到落地的全面剖析
开发语言·人工智能·算法·安全·语言模型