2020-ARTS-打卡第四天
Algorithm 题目描述 给定一个链表,判断链表中是否有环。 Example 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 题目解答 首先能想到的解法是使用一个Set存储已经遍历过的节点,如果在遍历中节点已经存在于Set中,则说明链表是有环的,这种解法额外使用了其它的数据结构。另一种更好的方法就是使用快慢指针的方式,类似于跑道上的套圈,如果快的人追上了慢的人则说明是有环的,否则就是快的人先到达终点(即访问到最后的Null) public class CycleSolution { public static boolean hasCycle(ListNode node) { ListNode slow = node; ListNode fast = node; while (slow != null && fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) { return true; } } return false; } } 快慢指针的解法的时间复杂度为O(n),空间复杂度为O(1),因为只使用了两个指针。 ...