日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 244. 最短单词距离 II(哈希map+set二分查找)

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 244. 最短单词距离 II(哈希map+set二分查找) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題
      • 2.1 暴力超時
      • 2.2 哈希表+set二分查找

1. 題目

請設計一個類,使該類的構造函數能夠接收一個單詞列表。
然后再實現一個方法,該方法能夠分別接收兩個單詞 word1 和 word2,并返回列表中這兩個單詞之間的最短距離。
您的方法將被以不同的參數調用 多次

示例: 假設 words = ["practice", "makes", "perfect", "coding", "makes"]輸入: word1 = “coding”, word2 = “practice” 輸出: 3 輸入: word1 = "makes", word2 = "coding" 輸出: 1

注意:
你可以假設 word1 不等于 word2, 并且 word1 和 word2 都在列表里。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/shortest-word-distance-ii
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

類似題目:

LeetCode 243. 最短單詞距離
LeetCode 245. 最短單詞距離 III
程序員面試金典 - 面試題 17.11. 單詞距離(multimap平衡二叉搜索樹)

2.1 暴力超時

11 / 12 個通過測試用例

class WordDistance {vector<string> w; public:WordDistance(vector<string>& words) {w = words;}int shortest(string word1, string word2) {int l = -1, r = -1, mindis = INT_MAX;for(int i = 0; i < w.size(); ++i){if(w[i] == word1)l = i;if(w[i] == word2)r = i;if(l != -1 && r != -1)mindis = min(mindis, abs(l-r));}return mindis;} };

2.2 哈希表+set二分查找

  • 創建哈希map,單詞是key,其位置是set
  • 遍歷其中一個單詞的所有位置 i ,在另一個單詞的set中二分查找 i 的前后位置
class WordDistance {unordered_map<string,set<int>> m; public:WordDistance(vector<string>& words) {for(int i = 0; i < words.size(); ++i){m[words[i]].insert(i);}}int shortest(string word1, string word2) {int mindis = INT_MAX;for(auto i = m[word1].begin(); i != m[word1].end(); ++i){auto j = m[word2].lower_bound(*i);if(j != m[word2].end())mindis = min(mindis, abs(*j-*i));if(j != m[word2].begin())mindis = min(mindis, abs(*(--j)-*i));}return mindis;} };

68 ms 19.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 244. 最短单词距离 II(哈希map+set二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。