题解 | #链表中环的入口结点#

链表中环的入口结点

http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

使用快慢指针解决问题。

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        /*-----------------*/
        /*判断pHead是否为空*/
        /*-----------------*/
        if(pHead==nullptr)return nullptr;
 
        /*----------------*/
        /*   创建快慢指针  */
        /*----------------*/
        ListNode* fast=pHead,*slow=pHead;
 
        /*----------------------------------*/
        /*判断fast和fast->next是否遇到链表尾*/
        /*-----------------------------------*/
        while(fast && fast->next){
            /*-------------------------*/
            /*慢指针走一步,快指针走两步*/
            /*-------------------------*/
            slow=slow->next;
            fast=fast->next->next; 
            /*--------------------*/
            /*判断快慢指针是否相遇*/
            /*--------------------*/
            if(fast==slow){
                slow=pHead;
                /*--------------------------------------*/
                /*当head和meet相遇,说明遇到环的起始位置*/
                /*--------------------------------------*/
                while(slow!=fast){
                   slow=slow->next;
                   fast=fast->next;
                }
                return slow;
            }
        }
        return nullptr;
    }
};
全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务