|
1
2
3
|
Given a linked list, determine
if
it has a cycle in it.
Follow up:
Can you solve it without using extra space?
|
题意:判断链表有没有环
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public
class
Solution {
public
boolean
hasCycle(ListNode head) {
///定义两个快慢指针。有环的话快指针一定会和慢指针相遇。否则快指针就提前到尾巴了
////应该是我那会的考研题ca
if
(head==
null
|| head.next==
null
|| head.next.next==
null
)
return
false
;
ListNode fast=head.next.next;
ListNode slow=head.next;
while
(fast!=slow){
if
(fast.next!=
null
&& fast.next.next!=
null
){
fast=fast.next.next;
slow=slow.next;
}
else
{
//fast提前走到了尾
return
false
;
}
}
return
true
;
}
}
|
PS:快慢指针。注意判断边界条件
本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1905474