Leetcode141. 環形鏈表

給定一個鏈表,判斷鏈表中是否有環。

爲了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。

示例 1:

輸入:head = [3,2,0,-4], pos = 1
輸出:true
解釋:鏈表中有一個環,其尾部連接到第二個節點。
示例 2:

輸入:head = [1,2], pos = 0
輸出:true
解釋:鏈表中有一個環,其尾部連接到第一個節點。

示例 3:

輸入:head = [1], pos = -1
輸出:false
解釋:鏈表中沒有環。

思路

一個指針指向下一位,一個指針指向下一位的下一位,只要兩個指向的相同,就說明走了一個環。
在這裏插入圖片描述
那就是說明只要相遇就是環形,那麼While的條件就出來了:

while 不相遇:
	if 有一個空了:
		沒得玩,不是環形
	head.next--------|
					 |-賦值
	head.next.next---|
相遇了,真得環形
# 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
        """
        if head == None or head.next == None:
            return False
        s = head
        f = head.next
        while s!=f:
            if f == None or f.next == None :
                return False
            s = s.next
            f = f.next.next
            
        return True

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章