我正在审查决赛并偶然发现以下问题:
二叉堆默认具有优先级队列语义:如果我们将某个元素插入 n 次,则需要在它“消失”之前将其移除 n 次。想象一下,你想用集合语义来实现二进制堆。在这种情况下,插入和删除操作的速度有多快?
(a) 插入:O(n) 删除:O(logn)
(b) 插入:O(log n) 删除:O(n)
(c) 插入:O(log n) 删除:O(log n)
(d) 插入:O(1) 删除:O(n2)
(e) 以上都不是。
要插入使用优先队列语义实现的堆,它将是 O(logn),删除也是如此。但是对于集合,插入和删除取决于集合本身的许多因素。你认为答案应该是什么?