244 Shortest Word Distance II
Last updated
Was this helpful?
Last updated
Was this helpful?
This is a follow up of . The only difference is now you are given the list of words and your method will be called repeatedly many times with different parameters. How would you optimize it?
Design a class which receives a list of words in the constructor, and implements a method that takes two words word1 and word2 and return the shortest distance between these two words in the list.
For example,
Assume that words =["practice", "makes", "perfect", "coding", "makes"]
.
Given word1= “coding”
, word2 =“practice”
, return 3.
Given word1= "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.
The Idea: First I considered doing O(n^2) preprocessing and create a lookup table to find the shortest distances between words, but this got TLE. The alternative approach would be to just map the occurrences into a dictionary and return the return the minimum absolute difference between the two lists in linear time. This gets AC, but repeatedly calling this more than N times would in worst case have a higher complexity than O(n^2) time.
Complexity: O(n) time for init
and shortest
. O(n) space.