LeetCode 141. 环形链表(Linked List Cycle)

题目描述

 

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

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

 

解题思路

 

快慢指针,慢指针一次走一步,快指针一次走两步,若两者相遇则说明有环,快指针无路可走则说明无环。

 

代码

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     bool hasCycle(ListNode *head) {
12         ListNode *left = head, *right = head;
13         while(right && right->next && right->next->next){
14             left = left->next;
15             right = right->next->next;
16             if(left == right) return true;
17         }
18         return false;
19     }
20 };

 

posted @ 2018-09-27 16:40  FlyingWarrior  阅读(177)  评论(0编辑  收藏  举报