题解 | 数组中的逆序对

#include <limits>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */

    int merge(vector<int>& nums, int left, int mid, int right)
    {
        int ans = 0;
        vector<int> leftArray(nums.begin() + left, nums.begin() + mid + 1);
        vector<int> rightArray(nums.begin() + mid + 1, nums.begin() + right + 1);
        int leftLeft = leftArray.size();
        leftArray.insert(leftArray.end(), numeric_limits<int>::max());
        rightArray.insert(rightArray.end(), numeric_limits<int>::max());
        int leftIdx = 0, rightIdx = 0;
        for (int i = left; i <= right; i++)
        {
            if (leftArray[leftIdx] > rightArray[rightIdx])
            {
                nums[i] = rightArray[rightIdx];
                rightIdx ++;
                ans += leftLeft;
            }
            else {
                nums[i] = leftArray[leftIdx];
                leftIdx ++;
                leftLeft --;
            }
        }
        return ans % 1000000007;
    }

    
    int sort(vector<int>& nums, int left, int right)
    {
        if (left >= right)
            return 0;
        int mid = (left + right) >> 1;
        int ans1 = sort(nums, left, mid);
        int ans2 = sort(nums, mid + 1, right);
        return (merge(nums, left, mid, right) + ans1 + ans2) % 1000000007;
    }

    int InversePairs(vector<int>& nums) {
        // write code here
        int end = nums.size() - 1;
        return sort(nums, 0, end);
    }
};

全部评论

相关推荐

01-27 13:31
门头沟学院 Java
&nbsp;&nbsp;&nbsp;23年初二本仔突发奇想要为自己的前途而努力(经典的剧情:我要让她后悔!&nbsp;),于是开始没日没夜的刷b站和博客,同年6月也就是大二上的时候找了个小公司实习,当时伪装成了24届实际上是25届,那时候我那条业务线人数只有两人,架构几乎都是我设计的,纯纯草台班子,就这样扛了半年技术突飞猛进。&nbsp;&nbsp;然后在24年初在那家小公司业务稳定了,日常也只有修bug。当时就冒出了考研的想法并且开始行动&nbsp;&nbsp;不知道是否是机会总是给到不需要的人,还是命运对我在23年疯狂努力的回应我在24年3月的时候收到了一个大厂的实习转正offer…&nbsp;&nbsp;&nbsp;当时纠结了一个星期,当然那也是幸福的烦劳,那时我考研备战已经走上了正轨,考研的决心已定。但是还是不想错过这次去大平台看看的机会&nbsp;于是我还是一个人去了北京开始了实习兼顾备考的高三强度。&nbsp;&nbsp;入职之后的第一感受就是大平台对人才的要求不是我之前待的小作坊能比的:第一天就带着我熟悉业务,第二天让我改bug,第三天已经分配需求了。&nbsp;&nbsp;但是万幸的是mt没有让我加班每天10点上班6点就可以走,让我在工作日都能挤出工作日6个小时的备考时间,给的钱也很多让我在北京生存几乎没有什么压力,多出来的钱自己交了大学最后一年的学费,买了想买的公路车,各种以前奢望的电子产品。虽然辛苦但也是…好吧&nbsp;除了累还是累。&nbsp;&nbsp;&nbsp;七八月的时候转正名额就审批了,其实当时我一直在纠结是否为了&nbsp;all&nbsp;in&nbsp;考研离职,真实的大厂工作和我一起想的很不一样,上下游繁琐的对接,昂贵的沟通成本,为业务让步的妥协,时不时push的+1与+2故事很多不展开了,这些事情几乎让当时的我心力憔悴。&nbsp;&nbsp;八月初的时候我离开了那家公司回去全力备考,当初很多人劝我,他们说的都很对,但当下的最优选择不一定是人生的最优选择,只要我明白all&nbsp;in的代价是失去转正错过秋招就够了。&nbsp;&nbsp;九月到十二月我对时间的感知几乎是没有的,所幸准备的还算充分也算是是尽力而为。&nbsp;&nbsp;最后弱弱的问一句有没有准备春招的同路人,25&nbsp;或者&nbsp;26届都可,方向不重要,是计算机相关的就可以因为我学的比较杂,没有学习动力的都可以找我我会主动push一起学习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务