亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

leetcode127. Word Ladder

Galence / 2081人閱讀

摘要:但是這種要遍歷所有的情況,哪怕是已經(jīng)超過最小操作次數(shù)的情況,導致代碼超時。其實從另一個角度來說,這道題可以看做是廣度優(yōu)先算法的一個展示。按上文中的題目為例,可以將廣度優(yōu)先算法寫成以下形式。

題目要求
Given two words (beginWord and endWord), and a dictionary"s word list, find the length of shortest transformation sequence from beginWord to endWord, such that:

Only one letter can be changed at a time.
Each transformed word must exist in the word list. Note that beginWord is not a transformed word.
For example,

Given:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log","cog"]
As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",
return its length 5.

Note:
Return 0 if there is no such transformation sequence.
All words have the same length.
All words contain only lowercase alphabetic characters.
You may assume no duplicates in the word list.
You may assume beginWord and endWord are non-empty and are not the same.

假設輸入兩個單詞beginWord,endWord以及一個字典。每一次操作只能對當前單詞修改一個字符成為字典中的一個單詞。問至少需要多少次操作可以將beginWord轉化為endWord。如果不可轉換則返回0。

思路與代碼

其實如果從遞歸的角度來看,并非不可以實現(xiàn)。每一種普遍情況也就是將當前單詞修改一個字符成為當前字典中的一個單詞。但是這種要遍歷所有的情況,哪怕是已經(jīng)超過最小操作次數(shù)的情況,導致代碼超時。其實從另一個角度來說,這道題可以看做是廣度優(yōu)先算法的一個展示。

按上文中的題目為例,可以將廣度優(yōu)先算法寫成以下形式。

    hit
    /
  hot
  / 
dot  lot
/    / 
dog  log
/     /
cog  cog

也就是說,將每一層上可以生成的單詞全部列出來,然后再逐層遍歷,一旦出現(xiàn)一個單詞等于endWord,那么遍歷終止,將當前遍歷的次數(shù)返回。這里要注意的是,需要將已經(jīng)遍歷的單詞記錄下來,從而不會發(fā)生重復的情況。

代碼
    //和字典中單詞比較是否可以轉換
    public boolean canTransform(String word1, String word2){
         for(int i = 0, count=0 ; i1) return false;
         }
         return true;
     }
     
     public int ladderLength(String beginWord, String endWord, List wordList){
         Queue q = new LinkedList();
         q.add(beginWord);
         int steps = 0;
         while(!q.isEmpty()){
             int size = q.size();
             for(int i = 0 ;i iterator = wordList.iterator() ; iterator.hasNext();){
                     String current = iterator.next();
                     if(canTransform(current, temp)){
                         iterator.remove();
                         q.offer(current);
                     }
                 }
             }
            steps++;

         }
         return 0;
     }


想要了解更多開發(fā)技術,面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關注我的微信公眾號!將會不定期的發(fā)放福利哦~

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/67597.html

相關文章

  • leetcode126. Word Ladder II

    摘要:題目要求相比于,要求返回所有的最短路徑。至于如何生成該有向圖,則需要通過廣度優(yōu)先算法,利用隊列來實現(xiàn)。將每一層的分別入棧。如果遇到則至該層結尾廣度優(yōu)先算法結束。通過這種方式來防止形成圈。 題目要求 Given two words (beginWord and endWord), and a dictionarys word list, find all shortest transfo...

    cooxer 評論0 收藏0
  • [Leetcode] Word Ladder 單詞爬梯

    摘要:另外,為了避免產(chǎn)生環(huán)路和重復計算,我們找到一個存在于字典的新的詞時,就要把它從字典中移去。代碼用來記錄跳數(shù)控制來確保一次循環(huán)只計算同一層的節(jié)點,有點像二叉樹遍歷循環(huán)這個詞從第一位字母到最后一位字母循環(huán)這一位被替換成個其他字母的情況 Word Ladder Given two words (beginWord and endWord), and a dictionary, find t...

    pinecone 評論0 收藏0
  • [LeetCode/LintCode] Word Ladder

    摘要:使用,利用其按層次操作的性質(zhì),可以得到最優(yōu)解。這樣可以保證這一層被完全遍歷。每次循環(huán)取出的元素存為新的字符串。一旦找到和相同的字符串,就返回轉換序列長度操作層數(shù),即。 Problem Given two words (start and end), and a dictionary, find the length of shortest transformation sequence...

    張金寶 評論0 收藏0
  • [LeetCode] 126. Word Ladder II

    摘要:存放過程中的所有集合為所有的結尾,則順序存放這個結尾對應的中的所有存放同一個循環(huán)的新加入的,在下一個循環(huán)再依次對其中元素進行進一步的把首個字符串放入新,再將放入,并將鍵值對放入,進行初始化 Problem Given two words (start and end), and a dictionary, find all shortest transformation sequenc...

    wayneli 評論0 收藏0
  • 127. Word Ladder

    摘要:題目解答主要解題思路的,把每一種可能的都放進去試,看能不能有一條線邊到代碼當然,這樣的時間還不是最優(yōu)化的,如果我們從兩頭掃,掃到中間任何一個能夠串聯(lián)起來都可以,如果沒有找到可以串聯(lián)的那么返回。 題目:Given two words (beginWord and endWord), and a dictionarys word list, find the length of short...

    forsigner 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<