P4.2 FrogRiverOne
Find the earliest time when a frog can jump to the other side of a river.
- P4.2 青蛙过河
青蛙跳到河对岸的最早时刻
小青蛙想到河的另一边去。青蛙最初位于河流的一个河岸上(位置0),想要到达对岸(位置X+1)。树叶从树上掉到河面上。数组A由N个表示落叶的整数组成。A[k]表示一片叶子在时刻K下落的位置。要找到青蛙最早跳到河对岸的时间。
青蛙只有在1到X之间的每一个位置都有叶子出现时才能过河(也就是说,我们希望找到最早的那一时刻,此时1到X之间的所有位置都被叶子覆盖)。假设河流中的水流速度很小,也就是说,树叶一旦落入河流中不会改变它们的位置。
例如,给定的整数X=5和数组A:A[0]=1,A[1]=3,A[2]=1,A[3]=4,A[4]=2,A[5]=3,A[6]=5,A[7]=4。在时刻6的叶子落在第5个位置后,因此时刻6是最早的可以过河的时刻。
编写函数:
def solution(X, A)
给定一个由N个整数组成的非空数组A和整数X,则返回青蛙跳到河的另一边的最早时间。如果青蛙永远不能跳到河的另一边,函数应该返回−1。
例如,针对上面给出的数组A和X值,函数应该返回6。
假定:
- N和X是区间[1,100000]内的整数;
- 数组A的每个元素都是一个区间[1,x]内的整数;
- 解题思路
利用字典。 - Python3代码
# -*- coding:utf-8 -*-
# &Author AnFany
# Lesson 4:Counting Elements
# P 4.2 FrogRiverOne
def solution(X, A):
"""
返回最小的可以覆盖1到X序列的索引值
:param X: 目标
:param A: 数组
:return: 最小的索引值
"""
x_dict = {i: 0 for i in range(1, X+1)}
for index, value in enumerate(A):
if value in x_dict:
del x_dict[value]
if len(x_dict) == 0:
return index
return -1
- 结果
点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。