2179. 统计数组中好三元组数目(BIT)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2179. 统计数组中好三元组数目(BIT)相关的知识,希望对你有一定的参考价值。

2179. 统计数组中好三元组数目(BIT)

数组一转化成递增序,然后对数组二进行置换。然后就是套BIT枚举y,求左边比y小和右边比y大的更数,乘法原理即可。

class Solution 
public:
#define lowbit(x) x&(-x)
    long long goodTriplets(vector<int>& a, vector<int>& b) 
        int n = a.size();
        vector<int>mp(n);
        for(int i=0;i<n;i++) mp[a[i]] = i;
        for(int i=0;i<n;i++) b[i] = mp[b[i]]+1;
        vector<int>f(n+5);
        auto upd = [&](int x,int v)
            while(x<=n)
                f[x]+=v;
                x+=lowbit(x);
            
        ;
        auto que = [&](int x)
            int s = 0;
            while(x)
                s+=f[x];
                x-=lowbit(x);
            
            return s;
        ;
        long long ans = 0;
        for(int i=0;i<n;i++)
            int x = que(b[i]);
            ans+=1LL * x * (n-b[i]-(i-x));
            upd(b[i],1);
             
        return ans;

    
;

以上是关于2179. 统计数组中好三元组数目(BIT)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-11:1814. 统计一个数组中好对子的数目

leetcode-11:1814. 统计一个数组中好对子的数目

leetcode-11:1814. 统计一个数组中好对子的数目

1448. 统计二叉树中好节点的数目

1448. 统计二叉树中好节点的数目

1448. 统计二叉树中好节点的数目