【问题标题】:Datastructure to find/search and add?要查找/搜索和添加的数据结构?
【发布时间】:2018-01-10 13:28:41
【问题描述】:

我需要在数据结构(DS)中添加字符串。稍后我需要找到该字符串,然后根据相同的条件将其删除。

Hashset 最适合这里,因为它为搜索和删除给定元素提供了 O(1) 复杂度,也只需要更新父元素 右或左节点。在 Arraylist/Array 中,搜索时间为 O(n),删除时间为 O(n)。

根据我的理解,Hashset 在这里会更好,因为我需要搜索大量元素,如果找到则将其删除。

我的问题:- Hashset 或其他一些 DS 在这里更好吗?

【问题讨论】:

  • 您的问题/疑问是什么?
  • 添加了我的问题。

标签: java list data-structures treeset


【解决方案1】:

通常此类任务最好由Trie data structure 及其变体处理。 或者,您可以使用哈希表,但它不能保证最坏情况的复杂性。

【讨论】:

  • 为什么是哈希表,我不需要键值对?还有什么是 Treeset 的缺点?在这种情况下,Trie 如何比 treeset 更好?
  • 哈希表既可以用于哈希映射也可以用于哈希集,你很困惑。
  • 是的,你是对的,我们应该使用 hashset 而不是 treeset。不知何故,我忘记了哈希集的实现。更新了我的帖子
  • 但肯定 Trie 不适合这里,因为我不必使用前缀搜索
【解决方案2】:

像往常一样,这取决于您的需求:

    1234563 >order String 实例出于某种原因,例如按字母顺序)
  • 如果您希望存储和高效搜索所有具有指定前缀的字符串实例,请使用 Serge Rogatch 的回答中正确提到的 Trie

  • 如果您想检查指定字符串实例中是否存在模式,请使用Suffix tree

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多