题解 | 数组中的逆序对

数组中的逆序对

https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
class Solution:
    """
    暴力超时
    """
    def InversePairs1(self , nums: List[int]) -> int:
        # write code here
        if not nums and len(nums)==1:
                return 0
        count=0
        n=len(nums)
        for i in range(n):
            
            for j in range(i,n):
                if nums[i]>nums[j]:
                    count+=1
        return  count 
    
    def InversePairs(self , nums: List[int]) -> int:
        if not nums or len(nums)<=1:
            return 0 
        def mergesort(left ,right):
            if left>=right:
                return 0
            mid =left+(right-left)//2
            # 递归
            count=mergesort(left,mid)+mergesort(mid+1,right)
            # 合并排序之后的两个数组
            i,j,temp=left,mid+1,[]
            while i<=mid and j<=right:
                if nums[i]<=nums[j]:
                    temp.append(nums[i])
                    i+=1
                else:
                    temp.append(nums[j])
                    j+=1
                    count+=mid-i+1 # 计算此时[i:mid] 这几个都是大于j 指向的数字
                    count=count %1000000007

            # 合并剩下的
            temp.extend(nums[i:mid+1])
            temp.extend(nums[j:right+1])
            #print(temp)
            nums[left:right+1]=temp
            return count 
        return  mergesort(0,len(nums)-1)  % 1000000007
                    



全部评论

相关推荐

不想投了,不想面了,不想找了感觉自己像个小丑
用微笑面对困难:不是你去大学生就业平台看看啊,boss很多就是冲kpi的
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务