==========================努力奋斗财源广进==========================
判断给定的链表中是否有环。如果有环则返回true,否则返回false。
import java.util.*;
/**
* 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) {
//双指针法
if(head == null){
return false;
}
ListNode fast = head;
ListNode slow = head;
while(fast != null && fast.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
return true;
}
}
return false;
}
}
//待定
此题算作是简单题,主要是发现链表的环的特征有哪些表现。题解方法是利用了双指针法。
双指针法有很多应用,比如说典型的指向同一个链表的快慢指针,指向同一个指针的对撞指针,比如说两个指针访问两个链表的双指针。
题解中利用的是快指针每次走两步,慢指针每次走一步的方式,然后判断两个指针的地址是否相同,如果存在相同的时候,那一定存在环。
评论区记录复习记录
评论