面試題 17.11. 單詞距離
2023-06-28 09:38 作者:您是打尖兒還是住店呢 | 我要投稿
有個內(nèi)含單詞的超大文本文件,給定任意兩個不同的單詞,找出在這個文件中這兩個單詞的最短距離(相隔單詞數(shù))。如果尋找過程在這個文件中會重復(fù)多次,而每次尋找的單詞不同,你能對此優(yōu)化嗎?
示例:
輸入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student"
輸出:1
提示:
words.length <= 100000
如果只運行一次算法,請首先考慮尋找最近距離的算法。你應(yīng)該能夠在 O(N) 時間內(nèi)完成這項工作,其中 N 是文檔中的字數(shù)。
調(diào)整你的算法,使它成為可以重復(fù)調(diào)用的算法的一次執(zhí)行。它哪里慢?你能優(yōu)化它嗎?
你可以構(gòu)建一個查找表,把每個單詞映射到它出現(xiàn)位置的列表。然后怎樣找到最近的兩個位置呢?
如果你有一個每個單詞出現(xiàn)次數(shù)的列表,那么你實際上需要在兩個數(shù)組中尋找一對值(每個數(shù)組中選一個值),使它們之間的差異最小。這應(yīng)該是一個與初始算法很相似的算法。
能用兩個指針遍歷兩個數(shù)組嗎?你應(yīng)該能在 O(A+B)時間內(nèi)完成,其中 A 和 B 是兩個數(shù)組的大小。
?下面是代碼:(只是沒想到直接按順序遍歷就能得到。。)
標(biāo)簽: