剑指offer-35-数组中的逆序对

数组中的逆序对

http://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.result=0
    def InversePairs(self, data):
        # write code here
        self.splits(data)
        return self.result%1000000007
    def splits(self,data):
        if len(data)<=1:
            return data
        mid=len(data)//2
        left=self.splits(data[:mid])
        right=self.splits(data[mid:])
        return self.ranks(left, right)
    def ranks(self,left,right):
        l=0
        r=0
        ret=[]
        while l<len(left) and r<len(right):
            if left[l]>right[r]:
                ret.append(right[r])
                r+=1
                self.result+=len(left)-l  ##关键点,其他都是归并过程,只有这步计算次数
            else:
                ret.append(left[l])
                l+=1
        ret+=left[l:]
        ret+=right[r:]
        return ret
全部评论

相关推荐

01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务