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;
        }
        
    };
  • 相关阅读:
    Hive的架构和工作流程
    Hive的定义及搭建
    HBase API操作
    HBase相关概念简介
    HBase shell常用命令
    HBase的简介和搭建
    scrapy useragent
    scrapy settings
    scrapy中的request对象
    python语法
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7510263.html
Copyright © 2011-2022 走看看