博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程题—数组中的逆序对
阅读量:2441 次
发布时间:2019-05-10

本文共 944 字,大约阅读时间需要 3 分钟。

题目描述
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字
数据范围:
对于%50的数据,size<=10^4	对于%75的数据,size<=10^5	对于%100的数据,size<=2*10^5
示例1输入1,2,3,4,5,6,7,0输出7
解题思路
1、实际上是进行一次归并排序,先将分组定为1,前后比较,12比较,34比较、56比较,70比较,结束结果为1,2,3,4,5,6,0,7,此时结果res已经为12、将分组定为2,1234进行比较,5607进行比较,结束结果为1,2,3,4,0,5,6,7,此时res结果为1+2=33、将分组定位4,12340567进行比较,结束结果为0,1,2,3,4,5,6,7,此时res结果为3+4=74、需要注意的是在题目分割数组的时候,不一定都是2的幂次方,所以需要调整array1和array2数组的大小
通过代码
public class Solution {
int res=0; public int InversePairs(int [] array) {
int start=0; int len = array.length; for(int i=1;;i*=2){
if (i>len) break;// System.out.println("i此时的数值为"+i); for(int x=0;x
len) l=len-x; int[] array1= new int[l]; int j=x; start=j; for(int k=0;k
len) m=len-j; int[] array2= new int[m]; for(int k=0;k

转载地址:http://ngcqb.baihongyu.com/

你可能感兴趣的文章
crontab命令简介(转)
查看>>
C++中的静态联编和动态联编介绍(转)
查看>>
带有农历的日历(QT版本1752-2100)(转)
查看>>
LINUX的系统内核空间的保护(转)
查看>>
在Visual C++中利用UDL文件建ADO连接(转)
查看>>
C++编程批评系列 继承的本质(转)
查看>>
unix下编写socket程序的一般步骤(转)
查看>>
共享软件中注册部分的简单实现(转)
查看>>
RedHat Linux 9下所有权和许可权限(转)
查看>>
C++程序设计从零开始之语句(转)
查看>>
利用Apache+PHP3+MySQL建立数据库驱动的动态网站(转)
查看>>
C#中实现DataGrid双向排序(转)
查看>>
利用C语言小程序来解决大问题(转)
查看>>
简单方法在C#中取得汉字的拼音的首字母(转)
查看>>
.NET开发之中的17种正则表达式小结(转)
查看>>
编程秘籍:使C语言高效的四大绝招(转)
查看>>
配置XDM--一种Linux的图形登录界面(转)
查看>>
计算机加锁 把U盘变成打开电脑的钥匙(转)
查看>>
C#开发的两个基本编程原则的深入讨论(转)
查看>>
Fedora Core 4 基础教程 (上传完毕)(转)
查看>>