• linked-list-cycle-ii leetcode C++


    Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull.

    Follow up: Can you solve it without using extra space?

    C++

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* detectCycle2(ListNode *head){
            ListNode *fast = head;
            ListNode *slow = head;
            if(head==NULL) return NULL;
            while (NULL != fast){
                if (fast != NULL) fast = fast->next;
                if (fast != NULL) fast = fast->next;
                if (slow != NULL) slow = slow->next;
                while(fast != NULL && slow == fast){
                    slow = head;
                    while(slow!=fast){
                        fast = fast->next;
                        slow = slow->next;
                    }
                    return slow;
                }
            }
            return NULL;
        }
        
        ListNode *detectCycle(ListNode *head) {
            ListNode *fast = head;
            ListNode *slow = head;
            if (NULL == head) return NULL;
            while(fast && fast->next){
                fast = fast->next->next;
                slow = slow->next;
                if (fast != NULL && slow == fast)
                    return FindTheFirstSameNode(fast,head);
            }
            return NULL;
        }
        
        ListNode *FindTheFirstSameNode(ListNode* head1, ListNode* head2){
            while(head1 != head2){
                head1 = head1->next;
                head2 = head2->next;
            }
            return head1;
        }
    };
  • 相关阅读:
    缓存
    java内存模型—先行发生原则
    Java中的阻塞队列
    java的Map
    事务传播性、隔离性与MVCC
    final修饰符
    领域驱动设计和实践
    对象转换利器之Dozer
    SharePoint Iframe 报错“此内容不能显示在一个框架中”
    使用SVG symbols建立图标系统
  • 原文地址:https://www.cnblogs.com/vercont/p/10210281.html
Copyright © 2020-2023  润新知