【牛客刷题】BM20 数组中的逆序对

简介: 【牛客刷题】BM20 数组中的逆序对

正文


题目


09.png


题解


归并排序得结果


问题转化:求逆序对就是统计有多少个前大后小的数对,问题和归并两个有序数组求前大后小数对一样。所以现在的问题变为统计子问题中逆序对的个数。


递归模型变形:递归按照标准的归并排序来,注意的是统计个数,当出现nums[i]>nums[j]时,统计所有前半段区间内比nums[j]大的数及为ans+=m-i+1;(为了理解方便lm前半段,m+1r后半段)


边界注意:

  • i == r+1当前半段已经统计完,剩下后半段归并,证明j后的数都是比nums[m]大的,无需统计
  • j == l+1当后半段统计完,剩下前半段归并,i后的数都比num[l]大,但在之前已经统计个数,无需统计 alt

009.png

public class Solution {
    int[] nums,temp;
    public int merge_sort(int l,int r){
        if(l>=r)return 0;
        int m, i, j, k;
        long res;
        m = (l+r)/2;
        res = (merge_sort(l,m)+merge_sort(m+1,r))%1000000007;
        //merge
        for(k=l;k<=r;k++)temp[k]=nums[k];
        i = l;j = m+1;k = l;
        for(k=l;k<=r;k++){
            if(i==m+1)nums[k]=temp[j++];
            else if(j==r+1||temp[i]<=temp[j])nums[k] = temp[i++];
            else {
                res=(res + m-i+1)%1000000007;
                nums[k]=temp[j++];
            }
        }
        return (int)res;
    }
    public int InversePairs(int [] array) {
        nums = array;
        temp = new int[array.length];
        return merge_sort(0,array.length-1);
    }
}
相关文章
|
存储 JSON NoSQL
ETCD教程-4.深入ETCD
目前etcd主要经历了3个大的版本,分别为etcd 0.4版本、etcd 2.0版本和etcd 3.0版本。
1285 0
ETCD教程-4.深入ETCD
|
Web App开发 应用服务中间件 nginx
阿里云 部署django全攻略
1.登录root用户在系统下新建用户 useradd -m zhaozhao 2. 为新用户(zhaozhao)添加密码(默认创建的用户没有密码) passwd zhaozhao 3.
2717 0
|
JavaScript 容器
鸿蒙应用开发从入门到入行 - 篇6:数据监听器、滚动、侧滑功能
在本篇文章里,您将掌握监听器、滚动、侧滑等相关内容,助力你开发出更具交互的案例。
290 9
鸿蒙应用开发从入门到入行 - 篇6:数据监听器、滚动、侧滑功能
|
小程序 数据可视化 前端开发
编写小程序用什么软件
编写小程序用什么软件
1208 5
|
云安全 人工智能 安全
AI时代云安全新范式,阿里云安全能力全线升级!
AI时代,云安全面临着新的挑战,不仅要持续面对以往的传统问题,更需要全新理念落地于产品设计、技术演进、架构设计,才能实现效果、性能、和成本的最优解。
692 6
|
机器学习/深度学习 资源调度 自动驾驶
OFDM:赋能5G通信的基石
OFDM:赋能5G通信的基石
1504 3
|
存储 搜索推荐 Oracle
什么是全文搜索引擎
什么是全文搜索引擎
|
Kubernetes 应用服务中间件 nginx
基于容器化的Web服务器管理
【8月更文第28天】随着云原生技术的发展,容器化已经成为部署和管理应用程序的标准方式之一。Docker 和 Kubernetes 等工具提供了强大的容器管理和编排能力,使得开发者能够轻松地部署、扩展和维护 Web 服务器。本文将详细介绍如何使用 Docker 和 Kubernetes 实现 Web 服务器的容器化部署,并提供详细的步骤和代码示例。
595 1
|
安全 Java 测试技术
|
JSON Java 测试技术
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
353 0