题目描述
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
示例2
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
思路分析
- 利用快慢指针的原理,从head开始,慢指针每次走一步,快指针每次走两步,如果快指针追上了慢指针,就说明存在着环形
代码示例
# 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:
return False
fast = head
slow = head
while fast:
if fast.next = None: #说明fast后已经没有节点了,并且没有出现循环,直接返回False
return False
else:
slow = slow.next
fast = fast.next.next
if fast == slow: #fast追上了slow节点
return True
return False # 如果跳出while循环,程序还在运行,说明不存在环形链表
- 2019年6月24日 于北大图书馆 今天最后一门大作业,还没有交呢,明儿一定要完成呀