美文网首页算法数据结构和算法分析Java学习笔记
判断一个单链表是否有环,若有环,求进入环中的第一个节点

判断一个单链表是否有环,若有环,求进入环中的第一个节点

作者: 伍骁辛 | 来源:发表于2017-07-19 17:46 被阅读38次

判断单向链表是否有环,可以采用快指针与慢指针两个指针的方式来解决。即定义一个快指针fast和一个慢指针slow,使得fast每次跳跃两个节点,slow每次跳跃一个节点。如果链表没有环的话,则slow与fast永远不会相遇(这里链表至少有两个节点);如果有环,则fast与slow将会在环中相遇。判断出链表有环以后,则需要算出进入环的第一个节点。在fast与slow第一次相遇后,设置一个节点p从链表的头部开始遍历,每次只遍历一个节点。这样,当fast与slow再次相遇时,p所处的位置便是环的首部。

1.判断一个单链表是否有环.

Public static boolean hasCycle(listNode head) {

boolean flag = false;
ListNode fast = head;
ListNode slow = head;

while(fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;

if(fast == slow){
flag = true;
break;
}
return flag;
}

2.判断一个单链表中是否有环,若有环,求进入环中的第一个节点.

Public ListNode getFirstNodeInCycle(ListNode head) {

 if(head == null) {
 return null;
 } else {

 ListNode fast = head;
 ListNode slow = head;

 while(fast != null && fast.next != null) {

  slow = slow.next;
  fast = fast.next.next;

  if(fast == slow){

  //有环,则返回环的第一个节点
  slow = head;
  while(slow != fast){
  slow = slow.next;
  fast = fast.next;
  }
  return slow;
  }
}
return null;
}
}

相关文章

  • 有环单链表的相关问题

    问题:判断单链表是否有环;若有环,找出环的入口节点;若有环,求出环上节点的个数;若有环,求出整个链表的节点的个数;...

  • 检测链表有环

    题目:如何判断一个单链表是否有环?若有环,如何找出环的入口节点。 一、单链表是否有环 思路分析: 单链表有环,是指...

  • 单链表中存在环的相关问题Java实现

    问题描述 判断一个单链表是否有环? 如果存在环,如何得到环中节点的数目? 如果存在环,如何找到环的入口? 解题思路...

  • 链表判环

    如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的地址,无环的话返回空。如果链表的长度为N,请做到时间复...

  • 5_12链表判环

    如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复...

  • 判断链表是否有环

    如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复...

  • 2022-02-27环形链表linked-list-cycle

    1.判断单链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续...

  • 两个无限长度链表(也就是可能有环) 判断有没有交点

    给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点。 判断单向链表是否有环,可以采用快指针与慢指针的方式...

  • 链表面试常见合集

    给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点。 判断单向链表是否有环,可以采用快指针与慢指针的方式...

  • 判断单链表是否有环、求环长和环入口最优算法

    判断单链表是否有环、求环长和环入口最优算法 判断单链表是否有环是一个十分经典的算法问题,许多考试或者面试都有很大的...

网友评论

    本文标题: 判断一个单链表是否有环,若有环,求进入环中的第一个节点

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