金安区住房和城乡建设局网站,报纸做垂直门户网站,app ui模板,有赞商城商家版给你一个链表的头节点 head #xff0c;判断链表中是否有环。
如果链表中有某个节点#xff0c;可以通过连续跟踪 next 指针再次到达#xff0c;则链表中存在环。 为了表示给定链表中的环#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置#xff08;…给你一个链表的头节点 head 判断链表中是否有环。
如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 则返回 true 。 否则返回 false 。 解题思路
设置两个指针一快一慢快指针fast每次走两步慢指针slow每次走一步。
若链表有环则快慢指针一定会在环内相遇。
方法一
public boolean hasCycle(ListNode head) {if (head null || head.next null)return false;ListNode fasthead;ListNode slowhead;while (fast ! null fast.next ! null) {fast fast.next.next;slow slow.next;//在环内相遇if (fast slow){return true;}}return false;}
方法二
public boolean hasCycle2(ListNode head) {if (head null || head.next null) {return false;}ListNode slow head;ListNode fast head.next;while (slow ! fast) {if (fast null || fast.next null) {return false;}slow slow.next;fast fast.next.next;}return true;}