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

链表中环的入口结点

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) {
        ListNode *slow=pHead, *fast=pHead, *iter = pHead,*next;
        bool is_ring = false;
        if(pHead->next==nullptr||pHead->next==nullptr||pHead->next->next==nullptr) return nullptr;
        fast = pHead->next->next;
        while(slow&&fast->next&&fast->next->next){
            if(slow==fast) {
                is_ring = true;
                break;
            }
            slow = slow->next;
            fast = fast->next->next;
        }
        if(is_ring==false) return nullptr;
      	//上面代码判断是否有环,如果没有环,那么一定没有环的入口节点,返回nullptr
      	
      	//然后判断入口节点,思路是一个一个断开节点,那么断到最后的节点就是入口节点。
      	//缺点是破坏了原链表,不知道算不算作弊
        next = pHead->next;
        while(next){
            iter->next = nullptr;
            iter = next;
            next = next->next;
        }
        return iter;
    }
};


全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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