剑指offer之【数组中的逆序对】
题目:
数组中的逆序对
链接:
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之【数组中的逆序对】相关推荐
- 【LeetCode】剑指 Offer 51. 数组中的逆序对
[LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...
- 剑指offer:数组中的逆序对
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...
- 剑指offer之数组中的逆序对
1 问题 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...
- 【剑指offer】数组中的逆序对
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/27520535 转载请注明出处:http:// ...
- 《剑指offer》-- 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方
一.数组中的逆序对: 1.题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出 ...
- 剑指 Offer 51. 数组中的逆序对(归并排序做法)
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0 <= ...
- 剑指offer T51数组中的逆序对
case1:暴力法 class Solution {/*case1:暴力法*/public int reversePairs(int[] nums) {int len = nums.length;if ...
- 【LeetCode笔记】剑指Offer 51. 数组中的逆序对(Java、分治)
题目描述 多说无益-直接冲代码吧! 思路 && 代码 1. 暴力 O(n2n^2n2) 乍一看这题目,很难不直接用暴力法冲一冲(也就双层循环的事) 但是不出意料地超时啦-想一想,O(n ...
- 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
[LeetCode]剑指 Offer 56. 数组中数字出现的次数 文章目录 [LeetCode]剑指 Offer 56. 数组中数字出现的次数 package offer;import java.u ...
- 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...
最新文章
- 通过python利用哈希值实现比较两个文件的一致性
- JVM(一) ---JVM的数据模型
- 基于matlab/simulink的双闭环PMSM控制
- 微信营销这么做,你就成功了 转载
- 深度学习框架再次升级,它们都有什么优点?
- html自动切换文字,JS实现自动切换文字的导航效果代码
- 把view放在地图覆盖物上
- Vue.js(学习Vue3之前必须要掌握的知识)
- 阿里云云计算 30 AS的配置
- Linux远程拷贝文件命令 - scp
- 再谈GPU的内存带宽
- 电感5大特性参数,你知道几个?
- Fabric CA的基础知识
- cf----2019-10-28(Sad powers,Zebras,Not simply beatiful strings)
- Hadoop HDFS启动报异常:We expected txid 130043, but got txid 229381
- 一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人。...
- one 主格 复数 宾格_人称代词的主格和宾格
- android 夜间模式代码,Android 超简单的夜间模式如何实现?
- 用C语言实现shell
- [ESP32]学习笔记07
热门文章
- SAP Cloud for Customer(C4C)和微软Outlook的集成
- php自动计数,PHP 实现精确统计在线人数功能
- php非,通过非数字和字符的方式实现PHP WebShell
- 道路里程桩号标注_2000公里长距离电车远行,逸动EV460对里程焦虑说不
- python os.system关闭log_又到牛市!带你学习一个python强大证券数据分析工具
- bootstrap后台模板_免费bootstrap后台管理系统模板源码 网站后台模板_后台管理界面...
- java 访问access数据库_使用JAVA访问ACCESS数据库的方法
- win7锁定计算机要输入密码登陆,在win7中,怎么解决开机要输入用户密码
- 2021高考襄阳四中成绩查询,襄阳四中2020年高考成绩怎么样(高考喜报)
- c语言control表题目,CMFCControl 问题