算法學習筆記(二)----幾個算法題,包括鏈表中的環,單詞反轉等問題

小夥伴回來聊了幾個算法。算法

NO 1:如何找到鏈表中的環,使用快慢指針,好比一個走1步走2步,最後能相遇的就是環;spa

NO 2:NO 1的升級,如何肯定環的起始,這個要推很久:指針

      首先是引入快慢指針,假設環前面有k個節點,環長s。鏈表

      假設慢指針走到環的起始,即第k,快指針走了2k步(即在環裏走了k部),至關於快指針比慢指針快了k部,這時可理解爲快指針在環裏比慢指針慢了s-k步(這裏也要注意考慮s<k的狀況)。那麼慢指針再走s-k,快的走2(s-k),二者又會相遇,相遇位置就是在環裏,據環起始s-k的位置。升級

     推論結束,因此算法就是,讓他們第一次相遇,位置就在(據環起始位置s-k步)。從這個位置開始,讓慢指針回到起點走k步,讓快指針1步1步走也走k步,這樣他們能再次相遇,且相遇在環的起始位置。(算法真的很強大啊!)

NO 3:單詞反轉,好比i love you 反轉成you love i

      以爲想法很強大:先所有字母反轉,而後分單詞字母反轉(檢測空格區分單詞~)

NO 4:1024瓶藥水,其中有一瓶毒藥,小老鼠來實驗,若是喝到毒藥,一週之類會死掉,請用最少的老鼠,最少的天數,找出那瓶毒藥。

相關文章
相關標籤/搜索