是否有用于实现订单统计信息Red Black Binary tree的python库?到目前为止我还没有找到任何东西。
我想解决的问题:
给定序列:1,2,3,4,1,4,2,3:标签 - > 1,2,3,4-
首次出现标签i为L_i,第二次出现标签i为U_i
我想计算j的数量,使得索引(L_i)< index(L_j)但索引(U_i)<所有i的索引(U_j)
Input : 1,2,3,4,1,4,2,3
Output : 4
因为| j | = 3因为索引(L_1)< index(L_ {2,3,4})和index(U_1)
这可以在theta(n^2)
中通过数组中的线性搜索为每个点完成,但使用平衡顺序统计RBTree可以帮助在theta(n*log(n))
中完成此操作。
这是我的想法:
for each label in sequence:
count= count + search(label)
搜索时,如果找不到标签,请插入并返回0:O(logn)
搜索时,如果找到标签,则删除它并计算大于该数量的节点数并返回该数字