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. 统计一个数组中好对子的数目