数组中的逆序对
2015-07-19 16:55
232 查看
class Solution { public: int InversePairs(vector<int> data) { if(data.empty()) return 0; int n=data.size(); vector<int> copy(n); return Inverse(data,copy,0,n-1); } int Inverse(vector<int> &data,vector<int> ©,int start,int end) { if(start==end) { return 0; } int mid=(start+end)>>1; int left=Inverse(data,copy,start,mid); int right=Inverse(data,copy,mid+1,end); int count=0; int ll=mid; int rr=end; int k=end; while(ll>=start&&rr>mid) { if(data[ll]>data[rr]) { count+=rr-mid; copy[k--]=data[ll--]; } else { copy[k--]=data[rr--]; } } while(ll>=start) copy[k--]=data[ll--]; while(rr>mid) copy[k--]=data[rr--]; for(int i=start;i<=end;i++) data[i]=copy[i]; return left+right+count; } };
相关文章推荐
- c++ 隐藏规则
- django框架简介
- 2.4 Python是如何进行类型转换的?
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解 .
- 使用self. 导致的内存泄露
- html+jquery翻页相册(原创)
- #25 Reverse Nodes in k-Group
- java基础知识—Java中的反射机制
- weightSum 和 layout_weight 以及 为什么有时要设置0dp
- DataGrid- formatter:formatOper方法不可用
- 7个不是经常用但很强大的Linux命令
- ios 线程同步
- 2015SAAS服务图表
- 数据结构之线性结构的离散存储(单链表)
- linux命令,系统安全相关命令--su
- Codeforces Round #305 (Div. 2)B. Mike and Fun
- hdu 1020 Encoding
- 股票学习23
- 我的第四款软件--仿CSDN博客 所做的CODE 博客客户端
- 深刻理解Linux进程间通信(IPC)