剑指offer:数组中的逆序对
class Solution {
public:
void solve(int x, int y, vector<int> &A, vector<int> &B, int &ans){//B为临时空间
if(y - x > 1){
int mid = x + (y - x)/2, left = x, right = mid, i = x;
solve(x, mid, A, B, ans);
solve(mid, y, A, B, ans);
int zuo = mid - x;
while(left < mid || right < y){
if(right >= y || (left < mid && A[left] < A[right]))
{B[i++] = A[left++];zuo--;}
else {B[i++] = A[right++];ans = (ans+zuo)00000007;}
}
}
for(int i = x; i < y; i++) A[i] = B[i];
}
int InversePairs(vector<int> data) {
vector<int> tmp = data;
int ans = 0;
solve(0, data.size(), data, tmp, ans);
return ans;
}
};
class Solution {
public:
void solve(int x, int y, vector<int> &A, vector<int> &B, int &ans){//B为临时空间
if(y - x > 1){
int mid = x + (y - x)/2, left = x, right = mid, i = x;
solve(x, mid, A, B, ans);
solve(mid, y, A, B, ans);
int zuo = mid - x;
while(left < mid || right < y){
if(right >= y || (left < mid && A[left] < A[right]))
{B[i++] = A[left++];zuo--;}
else {B[i++] = A[right++];ans = (ans+zuo)00000007;}
}
}
for(int i = x; i < y; i++) A[i] = B[i];
}
int InversePairs(vector<int> data) {
vector<int> tmp = data;
int ans = 0;
solve(0, data.size(), data, tmp, ans);
return ans;
}
};
2020-05-10
在牛客打卡31天,今天学习:刷题 5 道/代码提交 5 次
全部评论
相关推荐
10-16 12:29
携程_移动安全研发 Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享