题解 | 数组中的逆序对
数组中的逆序对
https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int res = 0, tem[100010] = {};
void mrege_sort(vector<int>& nums, int l, int r)
{
if(l == r) return;
int mid = l + r >> 1;
mrege_sort(nums, l, mid), mrege_sort(nums, mid + 1, r);
int k = 0, i = l, j = mid + 1;
while(i <= mid && j <= r)
{
if(nums[i] <= nums[j]) tem[k ++] = nums[i ++];
else
{
res += mid - i + 1;
res = res % 1000000007;
tem[k ++] = nums[j ++];
}
}
while(i <= mid) tem[k ++] = nums[i ++];
while(j <= r) tem[k ++] = nums[j ++];
for(int i = l, k = 0; i <= r; i ++) nums[i] = tem[k ++];
}
int InversePairs(vector<int>& nums) {
mrege_sort(nums, 0, nums.size() - 1);
return res;
}
};

快手公司福利 1244人发布
查看26道真题和解析