【LeetCode】Linked List Cycle(环形链表)

这道题是LeetCode里的第141道题。

题目要求:

给定一个链表,判断链表中是否有环。

进阶:
你能否不使用额外空间解决此题?

简单题,但是还是得学一下这道题的做法,这道题是用双指针一个fast,一个slow。fast每一步前进两个节点,slow前进一个节点。判断fast和slow是否相等或者为空就行了。

贴个代码:

/**
 * 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) {
        ListNode *fast,*slow;
        if(head==NULL||head->next==NULL)
            return false;
        fast=head->next;
        slow=head;
        while(fast!=slow){
            if(fast->next!=NULL&&fast->next->next!=NULL){
                fast=fast->next->next;
                slow=slow->next;
            }
            else
                return false;
        }
        return true;
    }    
};

贴个结果:

个人总结:

我最初的想法就是一个动指针一个定指针来循环判断是否为环,这个方法在时间上要比我之前的快。

posted @ 2018-12-01 14:23  1000sakura  阅读(107)  评论(0编辑  收藏  举报