gpt4 book ai didi

python - 计算到达目标的步行点数

转载 作者:行者123 更新时间:2023-12-03 08:02:08 25 4
gpt4 key购买 nike

  • 给定一个数字(完成终点),然后是一个滑板车数组,其中滑板车代表 ith scooter. 的位置

  • 在电池完全放电之前,每辆滑板车最多只能行驶 10 个点,并且无法行驶更远的距离。例如,如果滑板车位于点 5,则它可以行驶到点 5、6、7、...、.,直至点 15(含),但不能行驶到点 16 或以上。

  • 计算到达目标的步行步数。

示例1:

finish=23, scooters[7, 4, 14] 
output -> solution(finish, scooters) = 4

说明1:

  • 从 0 开始,最近的滑板车是 scooters[1] = 4,因此步行到那里需要 4 分。
  • 那么滑板车最多可以达到 10 分,10+4=14。
  • 14 个点有一辆踏板车(踏板车[2] = 14)。
  • 这样我们就可以直接走到最后完成23。
  • 所以总共步行 4 点

示例2:

finish=27, scooters[15, 7, 3, 10]
output -> solution(finish, scooters) = 5

我的代码:

finish=23
scooters = [7, 4, 14]

def solution(finish, scooters):
sum = min(scooters)
step = min(scooters)

while sum < finish:
step += 10
sum = sum + step

return step

solution(finish, scooters)

如何包含scooters[i]在 while 循环中检查下一个可用的滑板车?


最佳答案

无需太多逻辑即可实现一致性的最简单方法是首先对列表进行sort()。之后,您可以计算两个踏板车之间超过 10 步的任何距离,并将其添加到总和中:

def solution(finish, scooters):
scooters.append(finish)
scooters.sort()
steps = scooters[0]
for i in range(1, len(scooters)):
if finish in (scooters[i], scooters[i - 1]):
break
steps += max(0, scooters[i] - scooters[i - 1] - 10)

return steps

print(solution(27, [15, 7, 3, 10]))
# 5
print(solution(23, [7, 4, 14]))
# 4
print(solution(10, [15, 7, 3, 10]))
# 3
print(solution(2, [15, 3]))
# 2

关于python - 计算到达目标的步行点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73809691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com