题目
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007
PS: 题目保证输入的数组中没有的相同的数字
解题思路
方法一:暴力法(只会这个)
依次遍历数组元素,并统计是否存在位于当前元素后面,且小于当前元素的元素,即统计能组成逆序对的个数,但是超时通过不了
方法二:归并排序算法
1.看了一些题解,采用归并的方式,先两两判断是否为逆序对
2.并对已经判断过的数对进行排序
3.再两两合并有序区间
题解
方法一:
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型
#
class Solution:
def InversePairs(self , nums: List[int]) -> int:
if nums ==[] or len(nums)==1:return 0
num=0
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
if nums[i]>nums[j]:
num+=1
return num%1000000007