华为机考--数据与结构算法:步长

题目描述:

给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,第一步必须从第一元素开始,1<=步长<len/2, 第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数量。

说明:这是3月份应聘华为(北京外企德科)的笔试题,现在想着学着把自己的一些经历慢慢记录下来,也锻炼自己的整理与复盘能力。代码分享如下:

def minstep (input):
   input1 = input
   a_input = len ( input1 )
   min_step = []
   for k in range(1,round(a_input/2)):
       time = 1
       k1 = k
       while  ( input[k1] + k1 ) <= (a_input - 1) :
           time += 1
           k1 = input[k1] + k1
           if k1 == a_input - 1:
              min_step.append (time )
   if  min_step:
      d = min(min_step)
      return d
   else:
      return  -1

if __name__ == "__main__":
    a = list(map(int,input().split()))
    b = minstep(a)
    print (b)

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值