原创

[百战LeetCode][8.判断给定的链表是否有环]


==========================努力奋斗财源广进==========================

一、算法题目

判断给定的链表中是否有环。如果有环则返回true,否则返回false。

二、题解

1、我的题解

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;        
    }
}

2、优秀题解

//待定

三、解法心得

此题算作是简单题,主要是发现链表的环的特征有哪些表现。题解方法是利用了双指针法。

双指针法有很多应用,比如说典型的指向同一个链表的快慢指针,指向同一个指针的对撞指针,比如说两个指针访问两个链表的双指针。

题解中利用的是快指针每次走两步,慢指针每次走一步的方式,然后判断两个指针的地址是否相同,如果存在相同的时候,那一定存在环。

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2022-07-15 15:44
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论