[leetcode] 243. Shortest Word Distance解題レポート
タイトルリンク:https://leetcode.com/problems/shortest-word-distance/
Given a list of words and two words word1 and word2, 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. 考え方:2つの単語が辞書に何度も現れる可能性があるので、hash tableで1つの単語の複数の位置を保存し、最小の距離を列挙することができます.コードは次のとおりです.
Given a list of words and two words word1 and word2, 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. 考え方:2つの単語が辞書に何度も現れる可能性があるので、hash tableで1つの単語の複数の位置を保存し、最小の距離を列挙することができます.コードは次のとおりです.
class Solution {
public:
int shortestDistance(vector<string>& words, string word1, string word2) {
unordered_map<string, vector<int>> mp;
for(int i =0; i< words.size(); i++)
mp[words[i]].push_back(i);
int Min = INT_MAX;
for(auto val1: mp[word1])
for(auto val2: mp[word2])
Min = min(Min, abs(val1 - val2));
return Min;
}
};