【问题标题】:C++ Algorithm to search for specific sequence of integers用于搜索特定整数序列的 C++ 算法
【发布时间】:2017-02-05 12:04:23
【问题描述】:

假设我有一个特定的整数序列。不得对其进行排序。整数的频率没有概率分布:

S = [12 65 37 52 45 63].

现在假设我有一组 100 个不同的序列,称为 D,我必须搜索它们。 D 无论如何都不能排序。 D中没有概率分布。D中的每个序列的长度都与S相同。

有没有一种算法可以快速搜索 D 中的特定序列 S?

【问题讨论】:

  • 编程语言是什么?
  • “未排序”到底是什么意思?为什么不以任何方式排序?
  • 因为数据来自实验。
  • 您可以遍历数组并搜索第一个元素,然后从那里开始检查子序列是否有效。如果不是,请继续下一个元素,依此类推直到最后。你的 N 有那么大,需要进一步优化吗?
  • 是的。有超过 300,000 个不同的 S 序列。每个 S 都有自己的组 D。D 可以有 >100 个序列。

标签: c++ algorithm search sequence


【解决方案1】:

您应该预处理 D。尝试将 D 的所有序列插入prefix tree

这样您可以检查长度为n 的序列S 是否在时间O(n) 中处于D 中,这是最优的,因为至少您必须读取S 一次。

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 2012-11-15
    • 1970-01-01
    • 2019-02-11
    • 2013-06-24
    • 2012-01-29
    • 2023-02-09
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多