美文网首页
leetcode-142. 环形链表 II

leetcode-142. 环形链表 II

作者: sleepforests | 来源:发表于2020-03-27 10:23 被阅读0次

    题目

    https://leetcode-cn.com/problems/linked-list-cycle-ii/

    代码

    使用java的方式解决

    public class Solution {
        public ListNode detectCycle(ListNode head) {
            Set<ListNode>set = new HashSet<ListNode>();
    
            ListNode node = head;
            while(node!=null){
                if(set.contains(node)){
                    return node;
                }else{
                    set.add(node);
                    node=node.next;
                }
            }
            return null;
        }
    }
    

    这种方式需要画图看看,转换其实是一个数学问题。

    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode detectCycle(ListNode head) {
            if(head==null||head.next==null){
                return null;
            }
            
            ListNode fast=head;
            ListNode slow=head;
            boolean hasCycle=false;
            while(fast!=null&&fast.next!=null){
                fast=fast.next.next;
                slow=slow.next;
                if(fast==slow){
                    hasCycle=true;
                    break;
                }
            }
            
            if(hasCycle){
                ListNode pp = head;
                while(pp!=slow){
                    pp=pp.next;
                    slow=slow.next;
                }
                return pp;
            }else{
                return null;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:leetcode-142. 环形链表 II

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