• 剑指offer 链表中环的入口位置


    题目描述

    一个链表中包含环,请找出该链表的环的入口结点。
     
    思路:这题需要知道a = c,然后head和slow每次走一步,相遇的时候就是第一个入口交点,

    注意:for循环或者while循环之后,一定要判断是是否正常退出,是找到满足条件的break退出,还是不满足for循环条件退出,加一个判断。

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
            val(x), next(NULL) {
        }
    };
    */
    
    class Solution {
    public:
        ListNode* EntryNodeOfLoop(ListNode* pHead){
            if(pHead == nullptr || pHead -> next == nullptr){
                return nullptr;
            }
            ListNode* fast = pHead;
            ListNode* slow = pHead;
            //find fast = slow
            while(fast != nullptr && fast -> next != nullptr){            
                fast = fast -> next -> next;
                slow = slow -> next;
                if(fast == slow){
                    break;
                }
            }
            if(fast == nullptr || fast -> next == nullptr){//这里一定要判断是否是正常退出
                return nullptr;
            }
            fast = pHead;
              while(fast != slow){
                fast = fast -> next;
                slow = slow -> next;
            }
            if(fast == slow){//这里一定要判断是否是正常退出
                return slow;
            }
            return nullptr;
        }
        
    };
  • 相关阅读:
    Tensorflow API解读
    《deep learning book》-- 引言
    算法导论--第一部分(基础知识)
    leetcode解题笔记--part1--array
    TensorFlow实战--阅读笔记part4
    TensorFlow实战--阅读笔记part3
    Pro Git阅读笔记--part1
    TensorFlow实战--阅读笔记part2
    周长最长分析
    VC维含义的个人理解
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7510263.html
Copyright © 2020-2023  润新知