題目:
示例 1:
輸入:head = [3,2,0,-4], pos = 1輸出:true
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
解題思路:題目要求簡單,只需要判斷有無環路,不需要找交點。對於這個題,只可能結果有兩種:無環和有環,無環即一條鏈,可以想象成一條筆直的路,有環則可以想象成環形跑道。把乙隻烏龜和乙隻兔子放在筆直的路上,兔子跑的快,烏龜跑的慢,怎麼也不可能相遇。但是若二者在環形跑道上就不一樣了,兔子跑的快,可能在第二圈或者第三圈就可以把烏龜追上,即相遇。
在這個題中,兔子和烏龜就是兩個指標,快指標和慢指標,移動步長不一樣。若有環則二者必定相遇,無環一定不會相遇,且無環時一定是快指標先走完鍊錶。
就可以依次寫**解題,定義快指標和慢指標同時從頭結點開始,while迴圈內移動指標,快指標步長為2,慢指標步長為1,若二者相等,有環路,返回true,直到迴圈結束也不返回true, 則返回false,無環路,迴圈結束條件即快指標到達表尾,快指標為空,且快指標下乙個也為空時。
**實現:
/**
* definition for singly-linked list.
* class listnode
* }*/public
class
solution
//快慢指標
listnode fast=head;
//快指標
listnode slow=head;
//慢指標
while
(fast!=null&&fast.next!=null)
}return
false;}
}
leetcode141 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。高階 你能否不使用額外空間解決此題?思路 剛開始想著讓他迴圈下去,直到和頭結點相同的時候,就返回 true,否則就返回 false,但還是 too young too 實際上還是設定兩個指標,乙個快指標和乙個慢指標,只要是在環裡面,總會相遇的,就可 return t...
LeetCode141 環形鍊錶
題目描述 給定乙個鍊錶,判斷鍊錶中是否有環。高階 你能否不使用額外空間解決此題?演算法描述 1.使用兩個快慢指標遍歷鍊錶。slow每次走一步,fast每次走兩步。fast走到鍊錶尾部無環,slow與fast重疊則有環。2.若鍊錶的起始位置等於環的起始位置 slow走一圈回到起始位置,fast剛好走了...
LeetCode141環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。設定兩個指標,乙個fast乙個slow,遍歷整個列表,若達到表尾時仍未出現指標相等則鍊錶無環。c語言版 definition for singly linked list.struct listnode bool hascycle struct listnode h...