【LeetCode 簡單題】33-環形連結串列
阿新 • • 發佈:2018-12-12
宣告:
今天是第33道題。給定一個連結串列,判斷連結串列中是否有環。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除
(手動比心ღ( ´・ᴗ・` ))
正文
題目:給定一個連結串列,判斷連結串列中是否有環
進階:你能否不使用額外空間解決此題?
解法1。設定一快一慢2個指標,慢指標每次只走1步,也就是指向下一個節點,快指標每次走2步,也就是指向下下個節點,如果連結串列有環則肯定會相遇,也就是慢指標==快指標,利用這個邏輯就可以設計程式碼了,如下。
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def hasCycle(self, head): """ :type head: ListNode :rtype: bool """ # V 1.0,能提交 slow = fast = head while fast.next and fast.next.next: fast = fast.next.next slow = slow.next if slow == fast: # 相等即表示相遇,即表示有環 return True return False # fast.next或fast.next.next指向None表示遍歷到連結串列結尾了,沒有找到環,返回False