zoukankan      html  css  js  c++  java
  • 链表//环形链表 II

    给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 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) {
            boolean cycle = false;
            ListNode start = head;
            if(head == null)
                return start;
            ListNode p1,p2;
                p1 = p2 = head;
            while(p2.next != null&&p2.next.next!=null){
                p1 = p1.next;
                p2 = p2.next.next;
                if(p1 == p2){
                    cycle = true;
                    p2 = head;
                    while(p1 != p2){
                        p1 = p1.next;
                        p2 = p2.next;
                    }
                    start = p1;
                    break;
                }
            }
            return cycle?start:null;
        }
    }
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *detectCycle(ListNode *head) {
            bool cycle = false;
            int counter;
            ListNode *start = NULL;
            if(head == NULL){
                return start;
            }
            ListNode *p1,*p2;
            p1 = p2 = head;
            while(p2->next != NULL&&p2->next->next!= NULL){
                p1 = p1->next;
                p2 = p2->next->next;
                if(p1 == p2)
                {
                    cycle = true;
                    p2 = head;
                    while(p1 != p2){
                        p1 = p1->next;
                        p2 = p2->next;
                    }
                    start = p1;
                    break;
                }
            }
            return cycle?start:NULL;
        }
    };
  • 相关阅读:
    spring aop简单理解
    动态代理
    静态代理
    spring的i o c简单回顾
    java注解的概念理解
    Eclipse中配置Tomcat
    java中Optional和Stream流的部分操作
    java中的stream的Map收集器操作
    java中的二进制运算简单理解
    Class.forName和ClassLoader.loadClass区别(转)
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602316.html
Copyright © 2011-2022 走看看