今天我参加了一家公司的笔试,整个测试都集中在数据结构上。我得到了一个问题,我认为我解决了。但是我在计算数据结构的Big O函数时遇到了困难。我将提供问题和我想出的答案。
给定一个文档,您需要存储文档中的单词,并能够在输入任何单词时返回计数。您可以使用
1. 你会选择什么数据结构? 2. 给出算法 3. 你的算法的顺序是什么?
对于问题1,我写道我会选择TRIE数据结构。对于问题2,我给出了简要的算法。我写道我将按以下方式构建TRIE数据结构。
我有一个方法
我写下
现在我的问题是: 我提到的顺序是否正确?如果不正确,如何解决这类问题(给定一个数据结构找到顺序)。使用O(k)后我感到非常困惑。它让我假设O(1)。
提示/建议非常欢迎! 编辑:更正问题,明确说明所有唯一单词都应存储其单词计数。
给定一个文档,您需要存储文档中的单词,并能够在输入任何单词时返回计数。您可以使用
char* GetNextWord()
。1. 你会选择什么数据结构? 2. 给出算法 3. 你的算法的顺序是什么?
对于问题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是单词数量。现在我的问题是: 我提到的顺序是否正确?如果不正确,如何解决这类问题(给定一个数据结构找到顺序)。使用O(k)后我感到非常困惑。它让我假设O(1)。
提示/建议非常欢迎! 编辑:更正问题,明确说明所有唯一单词都应存储其单词计数。
TRIE
结构体中是否缺少了一个重要成员? - kennytm