zoukankan      html  css  js  c++  java
  • 剑指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;
        }
        
    };
  • 相关阅读:
    springboot + self4j 学习笔记
    git 创建本地分支,并且推送到远程分支
    windows 下生成 ssh key
    Topshelf
    ADSL拨号连接
    EF中使用Contains方法
    elasticsearch中的概念简述
    CriticalFinalizerObject的作用
    sqlserver中的统计语法
    Windbg简单介绍
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7510263.html
Copyright © 2011-2022 走看看