最小跳跃次数

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

答案:

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.

相关推荐
青山木4 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
未来之窗软件服务4 小时前
计算机考试-快速排序—东方仙盟
数据结构·算法·排序算法·仙盟创梦ide·东方仙盟
小龙报5 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
wWYy.5 小时前
数据结构:跳表
数据结构
txzrxz5 小时前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
xqqxqxxq5 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
闪电悠米6 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~6 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
IT方大同6 小时前
C语言分支与循环语句
c语言·开发语言·算法
待磨的钝刨7 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习