题解 | #数组中的逆序对#

数组中的逆序对

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

归并排序,在合并的时候加一句 countinverse += len(left)-l 计算逆序对的个数,最后返回左逆序对+本次逆序对+右逆序对的数量 alt 【图源网络 侵删】

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param data int整型一维数组 
# @return int整型
#
class Solution:
    def InversePairs(self , data: List[int]) -> int:
        # write code here
        def mergesort(data):
            n = len(data)
            if n<=1:
                return data,0
            l,r = 0,0
            mid = n//2
            left,leftinverse = mergesort(data[:mid])
            right,rightinverse = mergesort(data[mid:])
            res = []#record ordered list
            countinverse = leftinverse+rightinverse
            while l < len(left) and r < len(right):
                if left[l]<=right[r]:
                    res.append(left[l])
                    l += 1
                else:
                    countinverse += len(left)-l
                    res.append(right[r])
                    r+=1
            res += left[l:]
            res += right[r:]
            return res,countinverse
        orderlist,count = mergesort(data)
        return count%1000000007
            
全部评论
天才
点赞 回复 分享
发布于 2023-03-15 14:55 新加坡
好棒
点赞 回复 分享
发布于 2022-04-01 16:22
谢谢你 泰罗
点赞 回复 分享
发布于 2022-03-14 19:48
棒呆了!!!
点赞 回复 分享
发布于 2022-03-10 15:56

相关推荐

牛客96763241...:杭电✌️也是打完招呼,没人回吗
点赞 评论 收藏
分享
评论
20
6
分享

创作者周榜

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