【LeetCode】环形链表 II Java 题解
题目描述
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。
说明:不允许修改给定的链表。
进阶:
你是否可以使用 O(1) 空间解决此题?
复制代码
思路分析
今天的算法每日一题链表题目。具体是找链表开始入环的第一个节点。 如果链表无环,则返回 null。我们可以转化为判断链表是否有环,简而言之,就是节点有没重复出现过。
首先,我们采用朴素算法,使用 hashSet 来做,记录出现的每个节点,如果一个结点出现两次,即为有环,第一次出现重复的节点,即为入环的第一个节点。
通过代码
hashSet 解法
复制代码
总结
hashSet 解法的时间复杂度是 O(n),空间复杂度是 O(n)。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/aad12e89062f36e88ee0065b9】。文章转载请联系作者。
评论