244. Shortest Word Distance II

This is a follow up of Shortest Word Distance. 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.

一刷
題解:與243不同的是,這個(gè)時(shí)候我們可以設(shè)計(jì)一個(gè)類,構(gòu)造函數(shù)傳入了array。
第二個(gè)需要注意的是褂策,對于兩個(gè)遞增的數(shù)列,怎樣找到i在數(shù)列a, j在數(shù)列b中的元素的最小差值旺聚。time complexity: O(m+n)

for(int i=0, j=0; i<list1.size() && j<list2.size();){
            int index1 = list1.get(i), index2 = list2.get(j);
            if(index1<index2){
                res = Math.min(res, index2-index1);
                i++;
            }else{
                res = Math.min(res, index1-index2);
                j++;
            }
        }
public class WordDistance {

    //the element in the value is ascending
    private Map<String, List<Integer>> map;
    
    public WordDistance(String[] words) {
        map = new HashMap<>();
        for(int i=0; i<words.length; i++){
            String w = words[i];
            if(map.containsKey(w)) map.get(w).add(i);
            else{
                List<Integer> list = new ArrayList<>();
                list.add(i);
                map.put(w, list);
            }
        }
    }
    
    public int shortest(String word1, String word2) {
        List<Integer> list1 = map.get(word1);
        List<Integer> list2 = map.get(word2);
        int res = Integer.MAX_VALUE;
        for(int i=0, j=0; i<list1.size() && j<list2.size();){
            int index1 = list1.get(i), index2 = list2.get(j);
            if(index1<index2){
                res = Math.min(res, index2-index1);
                i++;
            }else{
                res = Math.min(res, index1-index2);
                j++;
            }
        }
        return res;
        
    }
}

/**
 * Your WordDistance object will be instantiated and called as such:
 * WordDistance obj = new WordDistance(words);
 * int param_1 = obj.shortest(word1,word2);
 */
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殖卑,一起剝皮案震驚了整個(gè)濱河市袍暴,隨后出現(xiàn)的幾起案子煎谍,更是在濱河造成了極大的恐慌攘蔽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐粘,死亡現(xiàn)場離奇詭異满俗,居然都是意外死亡转捕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門唆垃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來五芝,“玉大人,你說我怎么就攤上這事辕万∮敫蹋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵蓄坏,是天一觀的道長。 經(jīng)常有香客問我丑念,道長涡戳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任脯倚,我火速辦了婚禮渔彰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘推正。我一直安慰自己恍涂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布植榕。 她就那樣靜靜地躺著再沧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尊残。 梳的紋絲不亂的頭發(fā)上炒瘸,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音寝衫,去河邊找鬼顷扩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慰毅,可吹牛的內(nèi)容都是我干的隘截。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼汹胃,長吁一口氣:“原來是場噩夢啊……” “哼婶芭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起统台,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤雕擂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贱勃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體井赌,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谤逼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仇穗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片流部。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纹坐,靈堂內(nèi)的尸體忽然破棺而出枝冀,到底是詐尸還是另有隱情,我是刑警寧澤耘子,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布果漾,位于F島的核電站,受9級特大地震影響谷誓,放射性物質(zhì)發(fā)生泄漏绒障。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一捍歪、第九天 我趴在偏房一處隱蔽的房頂上張望户辱。 院中可真熱鬧,春花似錦糙臼、人聲如沸庐镐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽必逆。三九已至,卻和暖如春韧献,著一層夾襖步出監(jiān)牢的瞬間末患,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工锤窑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留璧针,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓渊啰,卻偏偏與公主長得像探橱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子绘证,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容