环形链表

2019-05-27  本文已影响0人  柯柏笔记

题目

给定一个链表,判断链表中是否有环。
如图:


image.png

解决方案

利用快慢指针去解决,比如:在操场两个人一起跑步,有快有慢,如果跑到是圈,当到达一定时间,两个人一定会相遇,如果不会相遇 ,肯定跑道不是圆圈
如果有环,就一定会重叠

**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while(fast!=null&&slow!=null&&fast.next!=null){
            //快的每次走两步
            fast = fast.next.next;
            //慢的每次走一步
            slow = slow.next;
                if(fast==slow){
                    return true;
                }
           
        }
         return false;
    }
}
上一篇下一篇

猜你喜欢

热点阅读