这是一个来自HackerRank网站的问题。我已经尽了最大努力,但我一辈子都不知道自己做错了什么。问题如下:
“今天是元旦,人们排队乘坐仙境过山车。每个人都戴着一张贴纸,表明他们在从1
到n
的队列中的初始位置。”.任何人都可以贿赂直接在他们面前的人来交换职位,但他们仍然穿着他们原来的贴纸。一个人最多可以贿赂另外两个人
确定进入给定队列顺序所发生的最小贿赂数量。打印贿赂数量,或者,如果任何人贿赂了两人以上,打印Too chaotic
。”
这是我的尝试:
def minimumBribes(q):
bribes = 0
sorted_q = sorted(q)
total_moves = 0
for i in range(len(q)):
origin = sorted_q[i]
current = q[i]
moved = current - origin
if moved > 0:
if moved > 2:
print("Too chaotic")
return
else:
total_moves += moved
print(total_moves)
我意识到这有点罗嗦,但我想让我的逻辑尽可能清晰
如果我输入q = [1,2,5,3,7,8,6,4]
,预期的输出是7
,但我得到6
为什么
q=[1,2,5,3,7,8,6,4]
正如你在问题中看到的,没有提到贿赂的顺序,一个人可以贿赂2 一次一个人或一次一个人
如果你被某人贿赂,你就不能行贿,这是没有限制的
让我们反转空穴过程,像“q”中那样创建这种情况
'''
'''
相关问题 更多 >
编程相关推荐