class Solution:
def reversePairs(self, nums: List[int]) -> int:
n = len(nums)
if n <= 1:
return 0
def merge_sort(nums, count):
if len(nums) <= 1:
return nums, count
mid = (len(nums) - 1) // 2
p, count = merge_sort(nums[: mid + 1], count)
q, count = merge_sort(nums[mid + 1:], count)
sorted_nums = []
i, j = 0, 0
while i < len(p) and j < len(q):
if p[i] <= q[j]:
sorted_nums.append(p[i])
i += 1
else:
sorted_nums.append(q[j])
j += 1
count += len(p) - i
if i == len(p):
sorted_nums.extend(q[j:])
if j == len(q):
sorted_nums.extend(p[i:])
return sorted_nums, count
_, count = merge_sort(nums, 0)
return count
每日一练7.11——逆序数
最新推荐文章于 2021-11-09 00:59:42 发布