这个问题可以找到here
这是我试过的,但我得到了错误的答案。我的逻辑是这样的。在任何时刻,如果排序队列和状态队列中的位置差为负值,则将该差的绝对值加入混沌。现在,如果我面对两个连续的正差分,并且前一个位置的数字大于状态队列中的当前数字,我将混沌加上1。

def minimumBribes(q):
    truth = None
    old = 0
    chaos = 0
    for i in range(len(q)):
        diff = (i+1)-q[i]
        if diff < -2:
            print("Too chaotic")
            return

        if diff < 0 :
            chaos = chaos + abs(diff)
            truth = True
            continue
        else:
            if truth == True:
                truth = False
                old = q[i]
                continue
            if old > q[i]:
                chaos = chaos + 1


        old = q[i]
    print(chaos)

最佳答案

用比较法计算线性时间上的倒数是不可能的。这在理论上是有限度的。https://cs.stackexchange.com/questions/74515/can-we-count-the-number-of-inversions-in-time-mathcalon
您可以使用fenwick树(也称为二叉索引树)来解决它。这个想法在这里描述(https://www.geeksforgeeks.org/count-inversions-array-set-3-using-bit/)。

07-27 20:06