剑指 Offer 51. 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
private int[] helper;
private int solve(int[] nums, int left, int right) {
if (left >= right) {
return 0;
}
int mid = (left + right) >> 1;
int ans = solve(nums, left, mid) + solve(nums, mid + 1, right);
int index = left;
int p1 = left, p2 = mid + 1;
while (p1 <= mid && p2 <= right) {
if (nums[p1] > nums[p2]) {
helper[index++] = nums[p2++];
ans += mid - p1 + 1;
} else {
helper[index++] = nums[p1++];
}
}
while (p1 <= mid) {
helper[index++] = nums[p1++];
}
while (p2 <= right) {
helper[index++] = nums[p2++];
}
System.arraycopy(helper, left, nums, left, right - left + 1);
return ans;
}
public int reversePairs(int[] nums) {
this.helper = new int[nums.length];
return solve(nums, 0, nums.length - 1);
}
}
心之所向,素履以往 生如逆旅,一苇以航
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)