在段树或 BIT 树上插入和删除?

问题描述

我很难解决 Leetcode 307 Range Sum Query - Mutable 和 Leetcode 528: Random Pick with Index 的变体,以便设计一个数据结构,以便我可以添加元素,并且每个元素都有一个权重和基于权重成比例的流行元素。我正在考虑添加和弹出操作的最佳复杂度为 o(log n ),其中 n 是现有数据大小。但是,我可以找到一个很好的算法/数据结构来解决它。

解决方法

Splay Tree(或其他自平衡 BST)将支持任意位置的插入/删除、范围和查询,以及摊销 O(lgn) 中的 lower_bound/upper_bound。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...