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 次 |
最近记录: |