【问题标题】:What would be the best data structure to search and update integer values of an array?搜索和更新数组整数值的最佳数据结构是什么?
【发布时间】:2020-09-26 06:31:07
【问题描述】:

如果我的数组为 [7, 11, 13, 9, 4, 6],并且用户输入为 10
我想要刚好高于(或等于)10(在本例中为 11)的整数并将其替换为整数 - 10 (11 - 10)
我无法订购列表和二分搜索,因为我必须返回更新元素的索引。
我研究了对(索引,整数)对进行排序,然后进行二进制搜索,但是在更新之后我必须重新排序对数组以供下一个用户输入。

原始数组 = [7, 11, 13, 9, 4, 6]
排序数组 = [4, 6, 7, 9, 11, 13]
用户输入 = 10
输出 = 1(更新整数的索引)

更新的排序数组 = [4, 6, 7, 9, 1, 13]
重新排序的数组 = [1, 4, 6, 7, 9, 13]
用户输入 = 4
...

什么数据结构适合实现这个?

【问题讨论】:

    标签: arrays data-structures hashmap binary-search avl-tree


    【解决方案1】:

    您可以使用有序集来存储(值、索引)元组。您可以定义自定义比较函数以满足您的目标(这取决于相关的编程语言)。

    有序集操作包括:

    1. 添加一个元素。
    2. 删除一个元素。
    3. 搜索元素。
    4. 搜索大于或等于给定元素的元素。
    5. 搜索大于给定元素的元素。

    可以使用具有上述操作的有序集来解决给定的问题。

    某些编程语言(如 c++ 中的 set)具有预定义的数据结构,因此您无需从头开始实现它(仅用于使用它)。有序集内部实现通常是 Red-Black Tree (c++) 或 AVL Tree

    检查您的编程语言是否具有内置的有序集或使用包含它的某些库。这是一个非常有用且常见的数据结构,因此应该不难找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 2020-09-18
      • 2015-11-16
      • 2011-10-23
      • 2018-07-17
      • 2011-05-15
      相关资源
      最近更新 更多