思路

在有序队列中找出位置不对的几个数,而不是在无序中找有序的数。

方案

用 tmp 记录最后一个(可能是最大的数),从后往前找,前大后小,就算一个,如果前一个更小,就更新 tmp,让它保持已知的最小。

实现

class Solution:
    def wwork(self , n , a ):  
        # write code here
        number = 0
        if n <= 1:
            return number
        tmp = a[n-1]
        for i in range(1, n):
            item = a[n- i -1]
            if item > tmp:
                number += 1
                continue
            tmp = item
        return number