题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
首先想到的是快慢指针,但是用快慢指针判断环入口的原理没理解,感觉有点麻烦。然后读题“找出链表的环入口”,这个节点进环的时候要经过一次,出环必定还要经过一次,这不正好可以利用哈希表防止重复的原理吗?代码也很清爽------
// -*- coding:utf-8 -*- // class ListNode: // def __init__(self, x): // self.val = x // self.next = None class Solution: def EntryNodeOfLoop(self, pHead): # write code here if pHead is None: //首先判断链表是否为空,若为空就返回None return None hash_map = {} p1 = pHead //初始化一个指针p1 while p1: if p1.val not in hash_map://判断p1所指节点的值是否存在于hash_map中 hash_map[p1.val]= p1.val //若不存在,记录下该节点的值 p1 = p1.next //并将指针移向下一个节点 else: return p1 //若已存在于hash_map中,表明已经绕环一圈,直接返回即可 return None