栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【CF #790 H2. Maximum Crossings (Hard Version)】逆序对经典 + 偷懒调力扣api

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【CF #790 H2. Maximum Crossings (Hard Version)】逆序对经典 + 偷懒调力扣api

分析

求逆序对树(注意前面的等于后面的也算)
用归并排序,原理脑壳疼
直接调力扣接口
我负责输入输出

ac code
from typing import List


class Solution:
    def mergeSort(self, nums, tmp, l, r):
        if l >= r:
            return 0

        mid = (l + r) // 2
        inv_count = self.mergeSort(nums, tmp, l, mid) + self.mergeSort(nums, tmp, mid + 1, r)
        i, j, pos = l, mid + 1, l
        while i <= mid and j <= r:
            if nums[i] < nums[j]: # little change
                tmp[pos] = nums[i]
                i += 1
                inv_count += (j - (mid + 1))
            else:
                tmp[pos] = nums[j]
                j += 1
            pos += 1
        for k in range(i, mid + 1):
            tmp[pos] = nums[k]
            inv_count += (j - (mid + 1))
            pos += 1
        for k in range(j, r + 1):
            tmp[pos] = nums[k]
            pos += 1
        nums[l:r+1] = tmp[l:r+1]
        return inv_count

    def reversePairs(self, nums: List[int]) -> int:
        n = len(nums)
        tmp = [0] * n
        return self.mergeSort(nums, tmp, 0, n - 1)


for _ in range(int(input())):
    n = int(input())
    a = list(map(int, input().split()))

    temp = Solution()
    print(temp.reversePairs(a))
总结

直呼接口大法好
注意python如果wa
要采用python3.8.10和python3.7.10都试试
编译器还分快慢 无语子

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号