Die*_*iet 11 algorithm time-complexity data-structures
让我们有n价值观.所有值都false可以更改为true.我想对这些值进行3次操作,并且具有一定的时间复杂度:
val(i)- >返回索引处的值i.时间复杂度 - O(1).change(i)- >将index的值更改i为true.时间复杂度 -
摊销O(1).find(i)- >最接近的索引返回到索引i,包含值
false(如果有false上i然后返回i).时间复杂度 - O(log n).我并不关心空间复杂性.结构在开始时以固定长度初始化.初始化需要多长时间并不重要.
用于这些操作的数据结构应该如何?
Rah*_*hul -1
使用哈希图和二叉搜索树的组合。
示例 - 假设 boolean[] A = { false, false, false, false}
创建 hashmap(映射的键为整数,值为对象)
迭代每个项目: 1. 创建以索引和值作为属性的对象。2. 将对象添加到地图。3. 使用 BST 中位置的对象索引将相同的对象添加到 BST。
现在进行如下操作:
Val(i) :直接获取对象并返回对象的值。复杂性 (1)
Change(i, true/false) :再次从映射中获取对象并更新其值。复杂度 O(1)
Find(i) :检查该映射中对象的值是否为假。如果为 false,则返回,否则在 BST 中遍历以检查值为 false 的最近索引。注意,基于对象的键来遍历 BST 可以在 O(logn) 内完成。因此复杂度为 O(logn)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |