三逆数:给一个数的序列,当i<j<k且ai>aj>ak时,称作ai,aj,ak为一个三逆数。
现在给定一个长度为N的数组,求三逆数的个数。
我可以想到O(N^2)的复杂度的解法。不知道还没有没更好更快的解法。
O(N^2)解法:
1.预处理,先用R[1..N]数组记录,R[i]表示比第i个元素小的个数。时间为O(N^2)。
2.二层循环枚举每两个元素
for(int i = 0; i< N; ++i)
{
for(int j = i+1; j< N; ++i)
{
if(R[j] < R[i])
{
ans += R[j];
}
}
}
最后ans就是结果。这步时间也是O(N^2)。
最后的时间还是O(N^2).