LeetCode 141 環形鍊錶

2021-10-01 17:41:51 字數 1129 閱讀 9780

題目

示例 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...