python寫入ppt內容
阿新 • • 發佈:2021-01-12
技術標籤:資料結構與演算法指標連結串列javaleetcode
題目描述
對於一個給定的連結串列,返回環的入口節點,如果沒有環,返回null。
解法
快慢指標法。
1.設定快指標fast和慢指標slow。
2.快指標一次移動兩步,慢指標一次移動一步,則快慢指標一定會在環中相遇。
3.一個指標從環中的相遇點出發,另一個指標從連結串列的頭部出發,則一定會在環的入口節點相遇。
程式碼實現
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
if(head == null){
return null;
}
ListNode fast = head, slow = head;
boolean flag = false;
while(fast != null && fast.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
flag = true;
break;
}
}
if(!flag){
return null;
}
//一個指標從相交點出發,另一個指標從頭結點開始
//會在環的入口節點相遇
fast = head;
while(true){
if(fast == slow){
break;
}
fast = fast.next;
slow = slow.next;
}
return fast;
}
}