最小步骤数
题目
一个正整数数组,设为nums
最大为100
个成员
求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数
要求:
- 第一步,必须从第一元素起,且
1 <= 第一步步长 < len / 2
(len 为数组长度) - 从第二步开始只能以所在成员的数字走相应的步数,不能多不能少,如果目标不可达返回
-1
,只输出最小的步骤数量 - 只能向数组的尾部走不能向回走
输入
一个正整数数组,元素用空格
分割
数组长度 < 100
输出
正整数,最小步数
不存在输出-1
示例一
输入
7 5 9 4 2 6 8 3 5 4 3 9
输出
2
说明
第一个可选步长选择2
从第一个成员7
开始走两步到9
第二步从9
经过9
个成员到最后
示例二
输入
1 2 3 7 1 5 9 3 2 1
输出
-1
解题思路
本题的目标是实现求解一个数组中从第一个元素到最后一个元素最少步骤数的问题。
第一步:通过读入字符串,使用 split 函数将其转换为数字数组 nums。
第二步:通过循环语句遍历从第 1 个元素到第 len // 2 个元素作为第一步可能的走法,每次都记录当前的步数和当前的位置。在循环体中,通过 index += nums[index] 来模拟走的步数,通过 count += 1 来记录步数。
如果 index 超过了 nums 的长度,说明该走法不符合要求,跳出循环;如果刚好到达最后一个元素,更新最小步数并跳出循环。
最后一步:如果 min_count 仍为 0,说明没有可行的走法,输出 -1;否则,输出 min_count。