美文网首页
环形链表

环形链表

作者: 柯柏笔记 | 来源:发表于2019-05-27 15:14 被阅读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;
        }
    }
    

    相关文章

      网友评论

          本文标题:环形链表

          本文链接:https://www.haomeiwen.com/subject/lkshtctx.html