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

链表中环的入口结点

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 *res = nullptr;
      if (res = if_loop(pHead)) {
        ListNode *tmp = pHead;
        while (tmp != res) {
          tmp = tmp->next;
          res = res->next;
        }
      }
      return res;
    }
  private:
    ListNode* if_loop(ListNode *head) {
      ListNode *fast = head, *slow = head;
      
      while (fast && fast->next) {
        fast = fast->next->next;
        slow = slow->next;
        if (fast == slow) return fast;
      }
      return nullptr;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务