【问题标题】:Matrix structure with constant time insertion for columns and row具有恒定时间插入列和行的矩阵结构
【发布时间】:2013-11-26 23:59:50
【问题描述】:

我正在寻找一种矩阵结构,一种二维数组,允许我在恒定时间内插入新的行和列。有点像二维链表。

我不能使用二维链表的原因是我仍然想保持表格的结构。

我对访问没有任何要求,但结构必须是可迭代的。 去除也应该是恒定的时间。

我猜这是做不到的,我必须在插入新行时遍历所有列,在插入新列时遍历所有行。

我问这个问题以防万一这样的事情是可能的。

【问题讨论】:

    标签: data-structures matrix


    【解决方案1】:

    您可能需要考虑稀疏矩阵之类的东西。默认/空值由项目记录的缺失表示,整个矩阵结构标题包含矩阵的维度。行和列可以非常快速地追加,只需增加结构的边界属性即可。

    但是,如果您还想在现有行和列之间插入行和列,事情会变得有点棘手,您需要将两个列表和一个二维双向链接列表。你不会在这里得到恒定的时间插入。

    您的基本结构将包含一个包含行标题的结构和一个包含列标题的结构。使用正确的列表实现,插入/删除行或列 header 将是 O(n)(即与行/列数相关)。然后,每一行和每一列标题都会有一个指向它们存在的数据项的指针列表。同样,使用正确的列表实现,插入数据也应该是 O(n),与行中的项目数和列中的项目数有关。这种性能类似于列表。

    【讨论】:

    • 我实际上已经找到了一种方法。我使用两个链表和一个以一对链表节点为键的字典。插入一行和一列是 O(1) 因为链表和查找是 O(1) 因为字典。
    • 添加到链表 O(1),但是插入到链表中间是上)。使用字典是一个有趣的想法。也许您可以发布您的解决方案作为答案,以便其他人可以从中受益。如果我的回答有帮助,也许你可以投票。
    • 好吧,插入链表是 O(1),因为您在插入时不需要移动其他元素。在我的情况下,我总是直接引用要插入新元素的元素。
    【解决方案2】:

    最后我使用了自己的解决方案。我使用两个链表和一个以一对链表节点为键的字典。插入一行和一列是 O(1) 因为链表和查找是 O(1) 因为字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多