1. 程式人生 > 實用技巧 >LeetCode #243. Shortest Word Distance

LeetCode #243. Shortest Word Distance

題目

243. Shortest Word Distance


解題方法

設定三個變數word1的當前索引 word1ind = -len(words)、word2的當前索引 word2ind = len(words)、最小距離distance = len(words),遍歷陣列,當遇到word1或word2時更新其當前索引,並更新distance = min(distance, abs(word1ind - word2ind)),否則如果不是word1或word2,pass。最後返回distance。
時間複雜度:O(n)
空間複雜度:O(1)


程式碼

class Solution:
    def shortestDistance(self, words: List[str], word1: str, word2: str) -> int:
        word1ind = -len(words)
        word2ind = len(words)
        distance = len(words)
        
        for i in range(len(words)):
            if words[i] == word1:
                word1ind = i
                distance = min(distance, abs(word1ind - word2ind))
            elif words[i] == word2:
                word2ind = i
                distance = min(distance, abs(word1ind - word2ind))
            else:
                pass
        
        return distance