题目:

  数组中的逆序对

链接:

  https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=13&tqId=11188&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述:

  在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007

思路:

  受归并排序算法的启发,比较前后两段数组的大小,并计算逆序数;

代码:

  

 1 class Solution {
 2 public:
 3     int InversePairs(vector<int> data){
 4         int len = data.size();
 5         res =0;
 6         if(len <= 0)
 7               return 0;
 8         vector<int> da = data;
 9         MergeSort(data,da,0,len-1);
10         res = res%1000000007;
11         return res;
12     }
13     void MergeSort(vector<int> &data,vector<int> &data1, int l , int h){
14         int mid;
15         if(l == h){
16             data1[l] = data[l];
17         }
18         else{
19             mid = (l+h)/2;
20             MergeSort(data1,data,l,mid);
21             MergeSort(data1,data,mid+1,h);
22             Merge(data,data1,l,mid,h);
23         }
24     }
25     void Merge(vector<int> &data,vector<int> &data1, int l, int m, int h){
26         int i,j,k;
27         for(i = l,j= m+1;i <= m && j<= h; ++l){
28             if(data[i] < data[j]){
29                 data1[l] = data[i++];
30             }
31             else{
32                 data1[l] = data[j++];
33                 res += (m-i+1);
34                 res = res%1000000007;
35             }
36         }
37         if(i<=m){
38             for(k=0;k<=m-i;++k){
39                 data1[l+k] = data[i+k];
40             }
41         }
42         if(j <= h){
43             for(k=0;k<= h-j;++k){
44                 data1[l+k] = data[j+k];
45             }
46         }
47     }
48 private:
49     int res;
50 };

转载于:https://www.cnblogs.com/wangshujing/p/6943440.html

剑指offer之【数组中的逆序对】相关推荐

  1. 【LeetCode】剑指 Offer 51. 数组中的逆序对

    [LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...

  2. 剑指offer:数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  3. 剑指offer之数组中的逆序对

    1 问题 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  4. 【剑指offer】数组中的逆序对

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/27520535 转载请注明出处:http:// ...

  5. 《剑指offer》-- 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方

    一.数组中的逆序对: 1.题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出 ...

  6. 剑指 Offer 51. 数组中的逆序对(归并排序做法)

    在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0 <= ...

  7. 剑指offer T51数组中的逆序对

    case1:暴力法 class Solution {/*case1:暴力法*/public int reversePairs(int[] nums) {int len = nums.length;if ...

  8. 【LeetCode笔记】剑指Offer 51. 数组中的逆序对(Java、分治)

    题目描述 多说无益-直接冲代码吧! 思路 && 代码 1. 暴力 O(n2n^2n2) 乍一看这题目,很难不直接用暴力法冲一冲(也就双层循环的事) 但是不出意料地超时啦-想一想,O(n ...

  9. 【LeetCode】剑指 Offer 56. 数组中数字出现的次数

    [LeetCode]剑指 Offer 56. 数组中数字出现的次数 文章目录 [LeetCode]剑指 Offer 56. 数组中数字出现的次数 package offer;import java.u ...

  10. 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字

    [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...

最新文章

  1. 通过python利用哈希值实现比较两个文件的一致性
  2. JVM(一) ---JVM的数据模型
  3. 基于matlab/simulink的双闭环PMSM控制
  4. 微信营销这么做,你就成功了 转载
  5. 深度学习框架再次升级,它们都有什么优点?
  6. html自动切换文字,JS实现自动切换文字的导航效果代码
  7. 把view放在地图覆盖物上
  8. Vue.js(学习Vue3之前必须要掌握的知识)
  9. 阿里云云计算 30 AS的配置
  10. Linux远程拷贝文件命令 - scp
  11. 再谈GPU的内存带宽
  12. 电感5大特性参数,你知道几个?
  13. Fabric CA的基础知识
  14. cf----2019-10-28(Sad powers,Zebras,Not simply beatiful strings)
  15. Hadoop HDFS启动报异常:We expected txid 130043, but got txid 229381
  16. 一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人。...
  17. one 主格 复数 宾格_人称代词的主格和宾格
  18. android 夜间模式代码,Android 超简单的夜间模式如何实现?
  19. 用C语言实现shell
  20. [ESP32]学习笔记07

热门文章

  1. SAP Cloud for Customer(C4C)和微软Outlook的集成
  2. php自动计数,PHP 实现精确统计在线人数功能
  3. php非,通过非数字和字符的方式实现PHP WebShell
  4. 道路里程桩号标注_2000公里长距离电车远行,逸动EV460对里程焦虑说不
  5. python os.system关闭log_又到牛市!带你学习一个python强大证券数据分析工具
  6. bootstrap后台模板_免费bootstrap后台管理系统模板源码 网站后台模板_后台管理界面...
  7. java 访问access数据库_使用JAVA访问ACCESS数据库的方法
  8. win7锁定计算机要输入密码登陆,在win7中,怎么解决开机要输入用户密码
  9. 2021高考襄阳四中成绩查询,襄阳四中2020年高考成绩怎么样(高考喜报)
  10. c语言control表题目,CMFCControl 问题