当前位置:网站首页>【剑指Offer】51. 数组中的逆序对
【剑指Offer】51. 数组中的逆序对
2022-06-29 19:31:00 【LuZhouShiLi】
剑指 Offer 51. 数组中的逆序对
题目
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
思路
K神的题解:https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/solution/jian-zhi-offer-51-shu-zu-zhong-de-ni-xu-pvn2h/
代码
class Solution {
public:
int reversePairs(vector<int>& nums) {
vector<int> tmp(nums.size());
return mergeSort(0,nums.size() - 1,nums,tmp);
}
private:
int mergeSort(int l,int r, vector<int>& nums, vector<int>& tmp)
{
// 终止条件
if(l >= r) return 0;
// 递归划分
int m = (l + r) / 2;
int res = mergeSort(l,m ,nums,tmp) + mergeSort(m + 1,r ,nums,tmp);// 归并排序
// 合并阶段
int i = l,j = m + 1;
// 保存数组合并之前的模样
for(int k = l; k <= r; k++)
{
tmp[k] = nums[k];
}
for(int k = l; k <= r; k++)
{
// m及左边元素合并完成 把右边剩下的放入合并之后的数组
if(i == m + 1)
{
nums[k] = tmp[j ++];
}
else if(j == r + 1 || tmp[i] <= tmp[j])
{
// m + 1及右边的元素合并完成 将左边剩下的元素放入合并之后的数组
// 或者左边数组的元素小于等于右边,将左边数组的元素放入结果数组中,并让索引i加1
nums[k] = tmp[i ++];
}
else
{
// 右边数组的元素小于左边,将右边数组的元素放入结果数组中,并让索引+1
// 并且此时左边数组中的从i到m所有数都是大于tmp[j]的(因为左边的数组已经排序完毕)
nums[k] = tmp[j++];
res += m - i + 1;// 统计逆序对
}
}
return res;
}
};
边栏推荐
- Mba-day19 if P then q contradictory relation P and not Q
- 企业数字化转型的点、线、面、体!
- 销量赶不上拿钱速度,威马赴港救急
- 一小时构建示例场景 声网发布灵隼物联网云平台
- [software testing] 01 -- software life cycle and software development model
- Go: how to write a correct UDP server
- Connaissance générale des paramètres de sécurité du serveur Cloud
- ArrayList&lt;Integer&gt;使用==比较值是否相等出现 -129!=-129的情况思考
- Classic illustration of K-line diagram (Collection Edition)
- 【️爬虫必备->Scrapy框架从黑铁到王者️】初篇——万字博文详解(建议收藏)
猜你喜欢

Win11系统频繁断网怎么办?Win11网络不稳定的解决方法

Qui vole dans un jeu d'écriture?

Cantata 9.5版本已正式通过SGS-TÜV认证,符合所有主要软件安全标准

云上未来,数智导航:阿里云研究院报告合集

电脑ssd硬盘怎么安装使用

Escape and March, the "two-sided Jianghu" of temporary food

mysql远程连接

The sales volume could not catch up with the speed of taking money. Weima went to Hong Kong for emergency rescue

誰在抖音文玩裏趁亂打劫?

逻辑结构与物理结构
随机推荐
构建增强现实移动应用程序的六款顶级工具
Flutter 调用百度地图APP实现位置搜索、路线规划
AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践
AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践
KDD 2022 | 协同过滤中考虑表征对齐和均匀性
有了这4个安全测试工具,对软件安全测试say so easy!
誰在抖音文玩裏趁亂打劫?
@Sneakythlows annotation
高能直播,大咖云集!邀你共启BizDevOps探索之路。
MBA-day26 数的概念与性质
Where is the win11 installation permission set? Win11 installation permission setting method
JVM (4) bytecode technology + runtime optimization
做白银k线图有多重要?
Oracle11.2.0.4-Rac集群hang分析记录
PHP Laravel 使用 aws 负载均衡器的 ip 错误问题
【Proteus仿真】矩阵键盘中断扫描
Have you mastered all the testing methods of technology to ensure quality and software testing?
MSYQL, redis, mongodb visual monitoring tool grafana
QC协议+华为FCP+三星AFC快充取电5V9V芯片FS2601应用
数据库是什么?数据库详细笔记!带你走进数据库~你想知道的这里都有!