# Shortest Word Distance

Given a list of words and two wordsword1andword2, return the shortest distance between these two words in the list.

For example,\
Assume that words =`["practice", "makes", "perfect", "coding", "makes"]`.

Givenword1=`“coding”`,word2=`“practice”`, return 3.\
Givenword1=`"makes"`,word2=`"coding"`, return 1.

**Note:**\
You may assume that word1 **does not equal to** word2, and word1 and word2 are both in the list.

## 1. 遍历一遍数组，直接把两个给定单词所有出现的位置分别存到两个数组里，然后对两个数组进行两两比较更新结果

```
class Solution(object):
    def shortestDistance(self, words, word1, word2):
        """
        :type words: List[str]
        :type word1: str
        :type word2: str
        :rtype: int
        """
        list1 = []
        list2 = []
        result = 2 * len(words)
        for i in xrange(len(words)):
            if words[i] == word1:
                list1.append(i)
            elif words[i] == word2:
                list2.append(i)
        for i in list1:
            for j in list2:
                result = min(result, abs(i-j))
        return result
```

简化

```
 class Solution(object):
    def shortestDistance(self, words, word1, word2):
       list1 = [i for i in xrange(len(words)) if words[i] == word1]
       list2 = [i for i in xrange(len(words)) if words[i] == word2]
       return min([abs(i - j) for i in list1 for j in list2])
```

## 2. 用两个变量p1,p2初始化为一个大数(float('inf'))，然后我们遍历数组，遇到单词1，就将其位置存在p1里，若遇到单词2，就将其位置存在p2里，更新结果。因为两个单词如果比较接近的话，肯定是相邻的word1和word2的位置之差，所以我们只要每次得到一个新位置和另一个单词的位置比较一下就行了

```
class Solution(object):
    def shortestDistance(self, words, word1, word2):        
        p1 = float('inf')
        p2 = float('inf')
        result = float('inf')
        for i in xrange(len(words)):
            if words[i] == word1:
                p1 = i
            elif words[i] == word2:
                p2 = i
            result = min(result, abs(p1-p2))
        return result
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rachel2011.gitbook.io/leetcode_cc150/leetcode/shortest-word-distance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
