2011-07-04 45 views
0

我有一個問題要問算法。我被要求寫這個算法:不要求你爲我寫算法,只是讓我知道我需要做的有效過程:陣列算法

有n個元素的數組,像書或聖經的內容,假設你已經在其中插入了一個輸入字符串「Gaurav Agarwal」。你想要做什麼,你需要獲取數組中存在的該字符串的唯一元素。只是一個算法,你將如何進一步(未分類)

如果你不明白,那麼讓我知道,我會盡力幫助。

回答

1

找到重複在一個排序的數組的一個好方法是基於字符串的元素進行排序的,因此算法爲您功課的問題是:

  1. 排序數組
  2. 檢查你的陣列是否存在「Gaurav Agarwal」。由於它是排序的,因此相鄰元素將是相同的字符串,那麼您需要做的事情是保留一個計數器並將其增加,直到找到第一個不等於您正在查找的字符串的數組元素爲止
+0

數組中已經定義了100000個元素,如果這些元素存在於大數組中,您需要從該數組中找到輸入字符串唯一元素, – gaurav

0

我不認爲排序和搜索是您的問題的最有效的解決方案。

排序本身具有nlogn的複雜性。

只是做了暴力破解搜索陣列的更有效(有正的複雜性)

這是,如果你正在尋找一個字符串或弦數獨特的元素的情況。 如果您正在嘗試爲大量輸入字符串而不是一個輸入字符串尋找唯一元素,則排序很有意義。

1

它需要一些時間來排序字符串數組,然後解析它。我建議只分析字符串數組,並驗證字符串的長度是否與數組當前位置的字符串長度相同。如果長度是相同的,比較兩個字符串

0

我會繼續在以下步驟:

  1. 我會用一個哈希錶鏈接,使用哈希函數 行之有效的字符串。
  2. 找到新字符串的散列並搜索對應於該散列的 插槽的鏈接列表以找到重複項。