机器学习知识点一

链表中环的入口结点

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

注意

  1. 找到meet就跳出
  2. !的位置
  3. 双指针fast有可能在两个环节跳出
  4. 最后还需判断meet是否为空(==)
  5. 最后循环找到那个交点即可
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        ListNode* slow = pHead;
        ListNode* fast = pHead;
        ListNode* meet = NULL;

        if(!pHead){
            return NULL;
        }

        while(fast){
            slow = slow->next;
            fast = fast->next;

            if(!fast){
                return NULL;
            }

            fast = fast->next;

            if(fast == slow){
                meet = fast;
                break;
            }

        }

        if(meet==NULL){
            return NULL;
        }

        while(pHead&&meet){
            if(pHead==meet){
                 return meet;
            }
            pHead= pHead->next;
            meet = meet->next;
        }

        return NULL;
    }
};
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
10-14 13:25
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务