📜  用于 n 个元素和 O(1) 操作的数据结构

📅  最后修改于: 2022-05-13 01:57:53.014000             🧑  作者: Mango

用于 n 个元素和 O(1) 操作的数据结构

提出以下数据结构:
数据结构将保存从 0 到 n-1 的元素。元素没有顺序(没有升序/降序要求)

操作的复杂性应该如下:
* 插入元素 – O(1)
* 删除一个元素 – O(1)
* 找到一个元素 - O(1)

我们强烈建议您将浏览器最小化并先自己尝试一下。

布尔数组在这里工作。如果 i 存在,则数组将在第 i 个索引处具有值“真”,如果不存在,则为“假”。

初始化:
我们创建一个大小为 n 的数组并将所有元素初始化为不存在。

void initialize(int n)
{
  bool A[n];
  for (int i = 0; i

插入元素:

void insert(unsigned i)
{
   /* set the value at index i to true */
   A[i] = 1; // Or A[i] = true;
}

删除一个元素:

void delete(unsigned i)
{
  /* make the value at index i to 0 */
  A[i] = 0;  // Or A[i] = false;
}

寻找元素:

// Returns true if 'i' is present, else false
bool find(unsigned i)
{
    return A[i];
}

作为一个练习,更改数据结构,使其保持从 1 到 n 的值,而不是从 0 到 n-1。