[LeetCode] 141. Linked List Cycle

来源:互联网 发布:iphone4s4g网络补丁 编辑:程序博客网 时间:2024/06/03 18:17

Given a linked list, determine if it has a cycle in it.
给你一个单链表, 判断单链表是否有环.
非常非常非常简单的一题, 只需要使用两个指针, 一个指针每次移动到下一个节点, 另一个指针每次移动两个节点, 如果第二个指针移动到链表尾的话则说明该链表没有环, 如果两个指针指向的内容相等的话, 则说明该链表有环

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    bool hasCycle(ListNode *head) {        if(head == NULL || head->next == NULL) {            return false;        }        ListNode *p = head;        ListNode *q = head;        do {            q = q->next->next;            if(q == p)  return true;            p = p->next;        } while(q != NULL  && q->next != NULL);        return false;    }};
0 0
原创粉丝点击