牛客网竟有如此不为人知的惊天bug!!!

请教下各位数组中的逆序对这个题我到底哪错了。。老告诉我运行时间过大,求大神给个好方法。。
https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=13&tqId=11188&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
int InversePairs(vector<int> data) {
if(data.empty())
return 0;
return merge(data,0,data.size()-1);
}
int merge(vector<int>&data,int start,int end){
if(start>=end)
return 0;
int mid=(end-start)/2+start;
int leftcount=merge(data,start,mid);
int rightcount=merge(data,mid+1,end);
int cnt=0;
vector<int>temp(data.size());
int i=start;
int j=mid+1;
int k=start;
while(i!=mid+1&&j!=end+1){
if(data[i]>data[j]){
temp[k++]=data[j++];
cnt+=mid+1-i;
if(cnt>1000000007)
cnt%=1000000007;
}
else
temp[k++]=data[i++];
}
while(i!=mid+1){
temp[k++]=data[i++];
}
while(j!=end+1){
temp[k++]=data[j++];
}
for(int i=start;i<=end;i++){
data[i]=temp[i];
}
return (leftcount+rightcount+cnt)%1000000007;
}
全部评论
递归实现基本都会超时  别用递归
点赞 回复 分享
发布于 2017-03-06 17:06
减少运算。 运算太多也耗时  。
点赞 回复 分享
发布于 2017-03-06 17:21
这标题,厉害了!
点赞 回复 分享
发布于 2017-03-06 17:45
因为你少摸上10000000007
点赞 回复 分享
发布于 2017-03-06 17:46
标题太唬人了,吓得我赶紧进来看看😂
点赞 回复 分享
发布于 2017-03-06 19:32
男人看了会沉默
点赞 回复 分享
发布于 2017-03-06 22:35

相关推荐

01-21 03:20
门头沟学院 Java
热爱敲代码的程序媛:大家提的都是简历上的建议哈哈。肯定能找到满意的工作,你只需要秋招过程中多跟秋招的大家保持沟通交流,补短板,同时为秋招的大家提供一些力所能及的帮助,面试笔试的时候实事求是,心态放稳就行。以上这些做到了,那根据你简历的内容一定能找到满意的工作。找工作既看实力,又看运气。多磨炼技能,精进专业能力,同时多帮助周边的同学积累好运,关键时候自然如有神助。
点赞 评论 收藏
分享
01-24 09:44
已编辑
门头沟学院 算法工程师
aloffer:你是我见过的最美算法女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务