标签:ret function head fas fun 情况 code next 表结构
给定一个链表,判断链表中是否有环。(不使用额外空间)
示例:a-b-c-b
思路:
设置两个指针,快指针每次走两步,慢指针每次走一步,如果是环形的话快指针一定会追上慢指针,等到快指针和慢指针相等的时候,就返回true。否则就返回false
var hasCycle = function(head) {
//1.判断不存在的情况
if (!head || head.next) {
return false
}
//2.双指针循环
var fast = head.next
var slow = head
//2.1快指针每次走两步,慢指针每次走一步,如果快指针一直有值,那就证明是环形,直到两个相等就退出
while(fast && fast.next){
if(fast == slow) {
return true
}
fast = fast.next.next
slow = slow.next
}
//2.2否则,就不是环形
return false
};
var hasCycle = function(head) {
while(head != null){
if(head == head.next){
return true;
}
if(head.next != null){
head.next = head.next.next;
}
head = head.next;
}
return false;
};
这种方法会破坏链表结构,不推荐
标签:ret function head fas fun 情况 code next 表结构
原文地址:https://www.cnblogs.com/lyt0207/p/12359354.html