今天参加了一家公司的笔试。整个测试集中在数据结构上。我遇到了一个我认为我解决了的问题。但是我在计算数据结构的大 O 函数时遇到了困难。我将提供我想出的问题和答案。
给定您需要存储的文档和文档中的单词,并且应该能够在输入任何单词时返回计数。为您提供
char* GetNextWord()
.
- 你会选择什么数据结构
- 给出算法
- 你的算法的顺序是什么
对于问题 1,我写了我会选择 TRIE 数据结构。对于问题 2,我给出了一个简短的算法。我写道,我将构建 TRIE 数据结构如下。
struct TRIE{
boolean isWord;
int count;
Node* myList;
}
struct Node{
char* character;
Node *next;
TRIE *child;
}
我有方法可以为每个单词constructTrie()
做一个。addToTrie()
我写的顺序addToTrie()
是 O( k ),其中k是长度。的顺序constructTrie()
是N *O( k ),其中N是单词的数量。
现在我的问题是:我提到的命令是否正确?如果没有,将来如何解决这样的问题(给定一个 ds 查找命令)。使用 O( k )后我真的很困惑。它让我假设 O(1)。
提示/提示/建议是敞开的!
编辑:更正了清楚地提到应该为所有唯一单词存储字数的问题。