【python】剑指offer,数组中的逆序对?

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。

即输出P%1000000007

分析:

code:

import math

class Solution:   

    def InversePairs(self, data):       

        # write code here       

        count = 0       

        if len(data)==1:           

            return 0       

        if len(data) == 2:           

            if data[0]>data[1]:               

                return 1           

            else:               

                return 0       

        if len(data) > 2:           

            mid = (len(data)-1)//2         

            data_l = data[:mid]           

            data_r = data[mid:]           

            data_sorted_l = sorted(data_l)           

            data_sorted_r = sorted(data_r)         

            for i in range(len(data_sorted_r)):               

                for j in range(len(data_sorted_l)):                   

                    if data_sorted_l[j] > data_sorted_r[i]:                       

                        count += 1       

        return (count + self.InversePairs(data_l)+self.InversePairs(data_r))%1000000007


【python】剑指offer,数组中的逆序对?_第1张图片

你可能感兴趣的:(【python】剑指offer,数组中的逆序对?)