243_Shortest Word Distance

243. Shortest Word Distance

Level: easy

Tag: array

Question

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

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

Example1

Input: words = ["practice", "makes", "perfect", "coding", "makes"]
       word1 = “coding”
       word2 = “practice”
Output: 3

Idea 1 (brute force)

Find all the positions p1,p2p_1,p_2 for word1 and word2, and compute the shortest distance by minimizing p1p2|p_1 - p_2|.

Complexity 1

  • Time:O(n+k2)O(n+k^2) where nn is the length of the array and kk is the maximum number of word1 and word2.

  • Space:O(k)O(k)

Solution 1

Idea 2 (greedy)

Keep two indices p1,p2p_1,p_2 where we store the most recent locations of word1 and word2. Update shortest distance when we scan from left to right.

Complexity 2

  • Time:O(n)O(n) where nn is the length of the array

  • Space:O(1)O(1)

Solution 2

Last updated

Was this helpful?