6.19刷题打卡

题目 数组中的逆序对

最爱的树状数组

    int mod = (int) 1e9 + 7;
    public int InversePairs (int[] nums) {
        // write code here
        int[] a = nums.clone();
        Arrays.sort(a);
        int n = a.length;
        int[] t = new int[n + 1];
        long ans = 0;
        for (int v: nums) {
            int l = 0, r = n - 1;
            while (l <= r) {
                int m = l + r >> 1;
                if (a[m] < v) l = m + 1;
                else r = m - 1;
            }
            l = n - l; // 0 ~ n - 1 -> 1 ~ n
            ans = (ans + find(t, l)) % mod;
            add(t, l);
        }
        return (int) ans;
    }
    void add(int[] t, int i) {
        while (i < t.length) {
            t[i]++;
            i += i & -i;
        }
    }
    long find(int[] t, int i) {
        long ans = 0;
        while (i > 0) {
            ans += t[i];
            i -= i & -i;
        }
        return ans;
    }

打卡截图

#和牛牛一起刷题打卡#
全部评论

相关推荐

11-29 00:55
门头沟学院
区域赛银,邀请赛金,打算十二月打下Java基础、背点八股、写个外卖后去投福建小厂的寒假实习,简历应该怎么写呢?以及福州/和厦门有推荐的小厂吗?
牛客53210502...:简历一页:把区域银,邀请赛金标粗,其他的奖除非凑一页否则没有必要写。或者多页:每个站一行这样都列出来。项目经历看看牛客其他人是怎么写的,写的不好呢。简历打磨好按部就班没问题的
点赞 评论 收藏
分享
热爱生活的咸鱼在吃瓜:个人建议,项目太简单了,实习干的活都是测试的活,反正又没人知道你实习干啥了,你懂吧
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务