剑指Offer - 面试题51. 数组中的逆序对(归并排序,求逆序对)

1. 题目

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。

示例 1:
输入: [7,5,6,4]
输出: 5限制:
0 <= 数组长度 <= 50000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 归并排序

  • 详见 LeetCode 315. 计算右侧小于当前元素的个数(二叉查找树&二分查找&归并排序逆序数总结)

  • 方法1:后半部出队写入临时数组时,sum + 前半部 没有出来的个数(比后部出队的那个大)

  • 方法2:前半部出队,sum+ 后半部 已经出队的数量(比出队的那个小),有后续操作,当后半部全部出队了完毕,前半部继续出队,整个后半部分都比剩余的前半部分小。

两种方法只能取其一。

class Solution {int sum = 0;vector<int> temp;
public:int reversePairs(vector<int>& nums) {temp.resize(nums.size());mergesort(nums,0,nums.size()-1);return sum;}void mergesort(vector<int>& arr, int l ,int r){if(l >= r)return;int mid = l + ((r-l)>>1);mergesort(arr,l,mid);mergesort(arr,mid+1,r);merge(arr,l,mid,r);}void merge(vector<int>& arr, int l, int mid, int r){int i = l, j = mid+1, k = 0;// 方法1:后半部出队,sum+前半部 没有出来的个数(比后面大的)while(i <= mid && j <= r){if(arr[i] <= arr[j])temp[k++] = arr[i++];else{temp[k++] = arr[j++];sum += mid-i+1;}}while(i <= mid)//后面都出完了,前半部还剩一些temp[k++] = arr[i++];while(j <= r)temp[k++] = arr[j++];for(i = l,j = 0; j < k; )arr[i++] = temp[j++];//---------------------------------------------------//方法2:前半部出队,sum+ 后半部 已经出队的数量(比前面的小)while(i <= mid && j <= r){if(arr[i] <= arr[j]){temp[k++] = arr[i++];sum += j-(mid+1);}elsetemp[k++] = arr[j++];}while(i <= mid)//后面都出完了,前半部还剩一些,还需要操作{temp[k++] = arr[i++];sum += j-(mid+1);}while(j <= r)temp[k++] = arr[j++];for(i = l, j = 0; j < k; )arr[i++] = temp[j++];}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小马哥】Spring Cloud系列讲座

这里推荐一个不错的Spring Cloud系列讲座&#xff0c;讲师简介如下&#xff1a; 小马哥&#xff0c;阿里巴巴技术专家&#xff0c;从事十余年Java EE 开发&#xff0c;国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施、迁移等。重点关注云计算、微服务以及…

名校女教授,强迫其男博士“发生性关系多年”!索赔750万

转自 | 论文项目硕博招聘、磐创AI来源 | FOREIGNDAILY 、双一流高校等早稻田大学是日本的知名大学&#xff0c;但最近这所知名大学却引来了不小的争议。早稻田大学一名25岁的学生&#xff0c;将他的女导师和学校一起告上了法庭&#xff0c;要求他们赔偿自己750万日元&#xff…

剑指Offer - 面试题43. 1~n整数中1出现的次数(找规律+公式)

1. 题目 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现了5次。 示例 1&#xff1a; 输入&#xff1a;n 12 输出&…

从网上看到的很搞笑的东西

[转]天下无贼经典台词IT版 戴尔&#xff1a;“人心散了&#xff0c;队伍不好带了!“ IBM&#xff1a;“我最烦你们些胡乱降价的了&#xff0c;一点技术含量都没有!“ 惠普&#xff1a;“实话告诉你们&#xff0c;惠普很生气&#xff0c;后果很严重!“ Intel&#xff1a;“你过得…

Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据

之前在spring for all社区看到这样一个问题&#xff1a;当actuator端点设置了context-path之后&#xff0c;turbine如何聚合数据&#xff1f;首先&#xff0c;我们要知道actuator端点设置了context-path是什么意思&#xff1f;也就是说&#xff0c;此时spring boot actuator的端…

prompt范式有了商业模式,卖提示词可以赚钱??

文 | 衡宇 发自 凹非寺源 | 量子位DALLE 2、GPT-3提示词在线交易平台&#xff0c;了解一下&#xff1f;最近&#xff0c;一家初创公司PromptBase&#xff0c;允许用户在该平台买卖提示词&#xff08;Prompt&#xff09;&#xff0c;提示词售价为1.99美元。PromptBase将向卖家抽…

LintCode 795. 4种独特的路径(DFS)

1. 题目 一个机器人位于一个m*n的网格的左上角。 机器人可以在任何时间点移动任何方向&#xff0c;但是每个网格只能达到一次。机器人正试图到达网格的右下角。 有多少种可能的独特路径? 样例 1: 输入: 2 3 输出: 4样例 2: 输入: 3 3 输出: 122. 解题 暴力回溯即可 class …

GARFIELD@01-19-2005

i begot them before, and you got them now 转载于:https://www.cnblogs.com/rexhost/archive/2005/01/19/94132.html

SpringCloud中文社区转型Spring4All欢迎您的加入

相信关注我们Spring Cloud中文社区&#xff08;bbs.springcloud.com.cn&#xff09;的朋友们最近已经在最新的横幅中发现了一个全新的社区&#xff1a;spring4all.com&#xff0c;相信从名字大家也能猜到该域名寓意Spring For All&#xff0c;那么我们为什么要重新创建这样一个…

全世界都在说中国话?2022国际大数据竞赛首次以“中文”命题

8月10日&#xff0c; IKCEST第四届“一带一路”国际大数据竞赛暨第八届百度&西安交大大数据竞赛&#xff08;以下简称“国际大数据竞赛”&#xff09;正式启动&#xff0c;本届赛题聚焦“低资源语言机器翻译”行业难题&#xff0c;向全球开发者发出邀请。百度发布稀缺语种任…

昨天发烧了……

唉&#xff0c;真是天有不测风云啊……发烧原因不明……转载于:https://www.cnblogs.com/wonderow/archive/2005/01/20/94699.html

LeetCode 51. N皇后 / 52. N皇后 II(回溯)

1. 题目 n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n&#xff0c;返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案&…

我的新书《Spring Cloud实战》预告

从去年6月开始编写《Spring Cloud构建微服务架构》系列博文开始&#xff0c;受到了不少同行的关注与支持。随后也开通了多个交流群、创建了相关的论坛&#xff08;http://bbs.springcloud.cn&#xff09;&#xff0c;虽然Spring Cloud在国内变得越来越火热&#xff0c;但是这一…

GPT-3 泄露了我的真实姓名

文 | 天于刀刀世界上总有这么一群人&#xff0c;他们是高智商科技狂&#xff0c;是新时代技术热点的弄潮儿&#xff0c;更是充满神秘感潜藏在里世界默默注视着时代发展的极客。而 Hacker News 这一网站致力于提供最新国际威胁情报、黑客动向以及维基解密资讯&#xff0c;让我们…

Gmail的另类浏览法--RSS

RSS 眼下大行其道&#xff0c;虽然RSS在技术上没有什么最尖端、最高新的突破&#xff0c;不过是对信息的时序做了一些处理&#xff0c;但很恰当地调整了人们获取信息的方式&#xff0c;使得信息的获得变得集中、主动和异步。 集中&#xff1a;可供订阅的聚合一般都是某个主题相…

LintCode 1210. 升序子序列(DFS)

1. 题目 给定一个整数数组&#xff0c;找到所有不同的可能的升序子序列&#xff0c;一个升序子序列的长度至少应为2。 例1: 输入: [4,6,7,7] 输出: [[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]例2: 输入: [65,21,-44,31,-8] 输出: [[-44,-8],[-44,31],[21,…

GPT3=魔鬼搜索引擎?从一个隐私血案说起...

世界上总有这么一群人&#xff0c;他们是高智商科技狂&#xff0c;是新时代技术热点的弄潮儿&#xff0c;更是充满神秘感潜藏在里世界默默注视着时代发展的极客。而 Hacker News 这一网站致力于提供最新国际威胁情报、黑客动向以及维基解密资讯&#xff0c;让我们得以一窥这个灰…

Spring Cloud构建微服务架构(五)服务网关

通过之前几篇Spring Cloud中几个核心组件的介绍&#xff0c;我们已经可以构建一个简略的&#xff08;不够完善&#xff09;微服务架构了。比如下图所示&#xff1a; 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现&#xff1b;而服务间通过Ribbo…

去除任务栏的图标

这次我要对付的软件是一个比较好用的代理软件(我不知道这样文章要不要隐藏文件名称),算法大家已经分析很多次了,我就不再重复了. 我这里来讨论一个实际应用的问题:如果你想用别人的机器上网而又不想让他轻易的发现(好像这样的想法大家都有吧?).而这个软件在启动之后 会在任务栏…

LintCode 1353. 根节点到叶节点求和(DFS)

1. 题目 给定仅包含来自0-9的数字的二叉树&#xff0c;每个根到叶路径可以表示数字。 举个例子&#xff1a;root-to-leaf路径1-> 2-> 3&#xff0c;它代表数字123&#xff0c;找到所有根到叶的数的总和 样例1 输入: {1,2,3} 输出: 25 解释:1/ \2 3 路径 1->2 表示…