背景的情況下,你關心的,如果不是跳過它:次線性算法/找到最後的不同元素
我記錄一些音頻今天,一個項目,做一次一個段落。如果我把這段文字搞亂了,我會重新編輯它,直到我把它弄對了,然後繼續下一段。當我將它們加載到電腦上時,我需要爲每個段落找到最後一個錄音。在不知道我爲特定段落錄製的錄音數量的情況下,我該怎麼做? (當算法潛入你的日常生活中時,你不喜歡它嗎?)
在算法術語中,您有一個元素數組,其中每個元素後跟另一個相同類型的元素,或者完全不同元件。查找序列的每個最後一個元素(正確記錄的音頻剪輯)。
問題:
所以,你有對象的數組,其中有一個ID字段,其中每個ID是下面的列表中的每個元素。我想這是他們最後的ID的對象,比如說在ID的數組是這樣的:
aabbbbbccddddddddddddddeefffffffffggghhhhiiiijjklmnnnnoo
顯然,如果字符串的長度爲n,有n個不同元素,它會帶你n個步驟來想辦法。我對通用算法更感興趣。我可以用二進制搜索類型算法來實現,但在不知道輸入的情況下,除了總元素的數量之外,我不知道它的運行時間。
此外,將知道不同ID的數量改變算法的運行時間?這對我來說是一個有趣的問題,我只是爲了滿足我的求知慾。
你可以告訴兩個不同的ID是否有一個ID之間? – aioobe
nope,除非你知道ID的總數,並且你已經看到了足夠的鴿子部分。這更多是一個純粹的思想問題,問題的要求是可塑的。 –
你的n個不同元素的例子證明沒有一個通用算法可以保證性能比O(n)更好。 –