```go var count int func InversePairs(nums []int) int { count = 0 temp := make([]int, len(nums)) mergeSort(nums, temp, 0, len(nums)-1) return count } func insertSort(nums []int, left, right int) { for i := left + 1; i <= right; i++ { t := nums[i] j := i for j > left && t < nums[j-1] { count++ nums[j] = nums[j-1] j-- } nums[j] = t } } func mergeSort(nums, temp []int, left, right int) { if right - left + 1 < 10 { insertSort(nums, left, right) return } mid := (left + right) / 2 mergeSort(nums, temp, left, mid) mergeSort(nums, temp, mid+1, right) if nums[mid] <= nums[mid+1] { return } merge(nums, temp, left, mid, right) } func merge(nums, temp []int, left, mid, right int) { copy(temp, nums) i := left j := mid+1 for k := left; k <= right; k++ { if i > mid { nums[k] = temp[j] j++ } else if j > right { nums[k] = temp[i] i++ } else if temp[i] <= temp[j] { nums[k] = temp[i] i++ } else { nums[k] = temp[j] count += mid+1 - i count %= 1000000007 j++ } } } ```
1

相关推荐

点赞 评论 收藏
分享
zzzilik:四个月实习做了3个项目不觉得很假吗,真没必要写这么多吧我感觉挑点核心的重点写一下我感觉会好点
你的简历改到第几版了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务