今日、会社が実施する筆記試験を受けました。全体的なテストは、データ構造に焦点を当てていました。解決したと思っていた問題が発生しました。しかし、データ構造の Big 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)だと思い込んでしまいます。
ヒント/ヒント/アドバイスは大公開!!
編集:すべての一意の単語の単語数を保存する必要があることを明確に述べている質問を修正しました。