LeetCode: 141.环形链表
程序员文章站
2022-04-04 08:31:14
...
做法有两种,第一种,每次遍历过一个节点就用哈希表记录一下,如果遍历的点已经被记录在哈希变中,返回True,如果whle head 退出循环,说明没有环,返回False
第二种, 使用快慢指针,快指针走两步,慢指针走一步。如果两个指针相遇了,就返回True。如果快指针遇到了None,就返回False.
- 第一种解法
class Solution:
def hasCycle(self, head: ListNode) -> bool:
if not head:
return False
dic = {}
while head:
tmp = dic.get(head, None)
if tmp:
return True
else:
dic[head] = 1
head = head.next
return False
- 第二种解法
class Solution:
def hasCycle(self, head: ListNode) -> bool:
if not head:
return False
p = head
q = head.next
while p != q:
if q== None:
return False
p = p.next
if q.next:
q = q.next.next
else:
return False
return True
上一篇: 数据结构与算法之树的遍历
下一篇: 【leetcode】141. 环形链表