【问题标题】:Returning duplicates within a given window size in an array?返回数组中给定窗口大小内的重复项?
【发布时间】:2013-03-10 21:43:15
【问题描述】:

我看到了这个问题,但由于时间和空间的限制,我不知道如何做第二部分:

给定一个值数组,设计并编写一个算法,该算法返回在彼此的 k 个索引内是否有两个重复项? k个索引并且在彼此的正负l(值)之内?在 O(n) 运行时间和 O(k) 空间内完成所有操作,即使是后者。

如果不查看 k 和 a[i] 之间索引差异的所有值,我似乎不可能知道在值的窗口大小内是否存在给定值的副本,但是因为 a[i] 可能很大,我认为这需要 O(n^2)。可以在 O(n) 内完成吗?

【问题讨论】:

    标签: arrays algorithm data-structures


    【解决方案1】:

    这听起来有点像家庭作业。是的,它可以在 O(n) 时间和 O(k) 空间内完成。提示:你需要两个数据结构,其中一个是哈希映射。

    【讨论】:

    • 提示2:可以将LRU与哈希表结合起来。
    • 这是针对问题的第一部分和第二部分还是仅针对第一部分。我认为在第二部分中,k 的值基本上是动态的——你不知道,因为它基于数组中的值(你检查 k 的窗口大小和你当前值的窗口大小'重新尝试找到一个重复的部分 - 这是我遇到问题的部分,但我用哈希图做了第一部分)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多