美文网首页
循环链表:快慢指针

循环链表:快慢指针

作者: 段段小胖砸 | 来源:发表于2021-07-09 16:47 被阅读0次
image.png

解决方案1:循环链表遍历放入数组,然后循环看节点是否存在于数组中,比较简单,就不实现了
解决方案2:快慢指针

public class Solution {
    public boolean hasCycle(ListNode head) {
       if (head == null) {
           return  false;
       }
       //定义快慢指针
       ListNode slow = head;
       ListNode fast = head.next;
       //遍历链表: 快指针步长为2,慢指针步长为1
        while (fast != null && fast.next != null) {
            //当且仅当快慢指针重合:有环,操作结束
            if (slow == fast) {
                return true;
            }
            fast = fast.next.next;
            slow = slow.next;
        }

        //快指针为null,或其next指向null,没有环,返回false
        return false;
    }

    class ListNode {
       int val;
       ListNode next;
       ListNode(int x) {
           val = x;
           next = null;
       }
   }
}
//leetcode submit region end(Prohibit modification and deletion)

}

相关文章

  • 循环链表:快慢指针

    解决方案1:循环链表遍历放入数组,然后循环看节点是否存在于数组中,比较简单,就不实现了解决方案2:快慢指针

  • 检测链表中的循环

    给定一个链表,检查链表是否有循环。下图显示了带有循环的链表。 解题思路 使用快慢两个指针遍历链表。将慢指针(slo...

  • 判断单链表环的快慢指针法

    快慢指针法 算法步骤 初始化快慢指针 循环处理,快指针走两步,慢指针走一步,直到发现环或者到达链表结尾 伪代码 环...

  • Java面试题集四

    1、怎么判断环形链表 使用快慢指针:创建两个指针,同时指向这个链表的头节点,然后开始循环,指针1每次移动一个结点,...

  • 算法学习--双指针

    双指针分类 快慢指针 左右指针 快慢指针:主要解决链表相关问题,比如:典型的判断链表中是否包含环、链表倒是第K个节...

  • 数据结构面试题

    一、单链表、双链表、循环链表 二、快慢指针 1.判断是否有环 一个指针一步走2下,一个指针一步走1下如果两个指针相...

  • leetcode 单链表的各种算法

    1 递归实现:合并两个有序的单链表 2 递归实现:单链表逆序存入vector 3 循环实现:快慢指针找到单链表中间...

  • 快慢指针的应用

    快慢指针的快慢主要是指在遍历链表过程中指针移动速度的快慢。比如遍历单链表,我们可以让指针每次移动一个节点,也可以让...

  • 基础算法解决相对应问题思路(二)

    回顾基础算法定义一个链表 1. 如何证明给定的链表是否包含循环?如何找到循环的头节点? 思路: 还是利用快慢指针解...

  • Tourist with Data Structure Seco

    链表 读题要仔细,只看题干,容易死的很惨。 设计链表 环形链表 一般环形链表使用快慢指针方式去做,快慢指针算法。参...

网友评论

      本文标题:循环链表:快慢指针

      本文链接:https://www.haomeiwen.com/subject/kavfpltx.html