Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不迭代两次的计数反转_Python_Algorithm - Fatal编程技术网

Python 不迭代两次的计数反转

Python 不迭代两次的计数反转,python,algorithm,Python,Algorithm,问题是可以找到的。 这是我尝试过的,但我得到了错误的答案。我的逻辑是这样的。在任何一点上,如果排序队列和状态队列中的位置差为负,则我们将该差的绝对值添加到混沌中。现在,如果我面对两个consequestive正差,并且前一个位置的数字大于状态队列中的当前数字,我将1添加到混沌中 def minimumBribes(q): truth = None old = 0 chaos = 0 for i in range(len(q)): diff = (i

问题是可以找到的。 这是我尝试过的,但我得到了错误的答案。我的逻辑是这样的。在任何一点上,如果排序队列和状态队列中的位置差为负,则我们将该差的绝对值添加到混沌中。现在,如果我面对两个consequestive正差,并且前一个位置的数字大于状态队列中的当前数字,我将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)
def最小值(q):
真理=无
旧=0
混沌=0
对于范围内的i(len(q)):
差异=(i+1)-q[i]
如果差异<-2:
打印(“太乱”)
返回
如果差异<0:
混沌=混沌+abs(差异)
真理
持续
其他:
如果真值==真值:
真=假
old=q[i]
持续
如果old>q[i]:
混沌=混沌+1
old=q[i]
打印(混沌)

如果我正确理解了这个问题,您所要做的就是迭代一次,如果值大于索引,则减去(value-(index+1))

这些差异的总和就是贿赂的金额,如果任何个人差异大于2,则“太混乱”


例如,对于25134,(2-1)+(5-2)=4,但5-2=3,因此您可以直接输出“太混乱”

在线性时间上,不可能使用比较来计算反转。这在理论上是有限度的

您可以使用Fenwick树(也称为二叉索引树)来解决它。这里描述了这个想法()