[剑指offer]JT35---数组中的逆序对(归并排序很勇嘛!)

news/2024/5/17 19:32:08 标签: 归并排序

剑指offer第三十五题

  • 题目如下
    • 思路与代码

题目如下

在这里插入图片描述

思路与代码

其实就是归并排序的一个变形,中间加了个判断。即,
//如果前面的元素小于后面的不能构成逆序对
//如果前面的元素大于后面的,那么在前面元素之后的元素都能和后面的元素构成逆序对

class Solution {
public:
    void merge_sort(vector<int> &first,vector<int> &second,int left,int right,int &res)
    {
        if(left>=right)
        {
            return ;
        }
        int mid=left+(right-left)/2;
        merge_sort(first,second,left,mid,res);
        merge_sort(first,second,mid+1,right,res);
        merge(first,second,left,mid,right,res);
    }
    void merge(vector<int> &first,vector<int> &second,int left,int mid,int right,int &res)
    {
        int l=left,m=mid+1,k=0;
        while(l<=mid&&m<=right)
        {
            if(first[l]>first[m])
            {
                res+=mid-l+1;
                res=res%1000000007;
                second[k]=first[m];
                k++,m++;
            }
            else
            {
                second[k]=first[l];
                l++,k++;
            }
        }
        while(l<=mid)
        {
            second[k]=first[l];
            k++,l++;
        }
        while(m<=right)
        {
            second[k]=first[m];
            k++,m++;
        }
        for(k=0,l=left;l<=right;l++,k++)
        {
            first[l]=second[k];
        }
    }
    int InversePairs(vector<int> data) {
        int result=0;
        vector<int> temp(data.size());
        merge_sort(data, temp,0,data.size()-1,result);
        return result;
    }
};

在这里插入图片描述


http://www.niftyadmin.cn/n/1847609.html

相关文章

Python2个自动化键盘鼠标的库 PyAutoGUI和Pywinauto

Python2个自动化键盘鼠标的库 PyAutoGUI和Pywinauto

foreach遍历数组中的元素

import java.util.Arrays;public class HelloWorld { public static void main(String[] args) {// 定义一个整型数组&#xff0c;保存成绩信息int[] scores { 89, 72, 64, 58, 93 };// 对Arrays类对数组进行排序Arrays.sort(scores);// 使用foreach遍历输出数组中的元素for (…

centos 免密码登陆ssh

配置cd ~ssh-keygen -t rsa ssh-copy-id root10.2.3.110登陆 ssh root10.2.3.110

牛客 北京信息科技大学第十一届程序设计竞赛 E kotori和素因子(dfs)

直接爆搜&#xff0c;枚举每个数取出的质因子即可。 PS&#xff1a;我是真的菜。 #include <bits/stdc.h> #define ll long long using namespace std; const int N 1e310; const int inf 0x3f3f3f3f; //vector <int> pd[20]; int pr[N],cnt,a[20]; bool vis[N…

手动创建Servlet配置web.xml的过程

<servlet> <servlet-name>FirstServlet</servlet-name> // 这里填写servlet名称 一般以类名命名 <servlet-class>com.baidu.servlet.FirstServlet</servlet-class> // 这里填写serlet所在类的完整类名 </servlet> <setvlet-m…

git 上传步骤

git addgit statusgit commit -m "message"git push

设置totalcmd 用文件管理器打开文件所在目录

增加工具栏&#xff1a;命令:c:\windows\exporer.exe参数:%p开始路径:c:\windows\图标文件&#xff1a;c:\windows\explorer.exe

线性筛欧拉函数

首先欧拉函数的定义&#xff1a; 对正整数n&#xff0c;欧拉函数是小于n的正整数中与n互质的数的数目&#xff08;φ(1)1&#xff09;。 欧拉函数的重要性质&#xff1a; 1.&#xff0c;显然除了质数本身&#xff0c;其它数都不与它互质。 2.,对于,与他不互质的数只有p的倍数…