首页 > 其他分享 >环形链表

环形链表

时间:2023-06-15 14:37:01浏览次数:43  
标签:head false 环形 fast next 链表 null


环形链表

题目: 给定一个链表,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

如果链表中存在环,则返回 true 。 否则,返回 false

解题思路: 运用快慢指针, 如果有环快指针一定会追上慢指针

public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null)
            return false;

        if(head.next == null)
            return false;

        ListNode fast = head.next ,slow = head;		//注意!!! fast初始一定要是head.next
        while(fast != slow){
            if(fast == null || fast.next == null) return false;
            fast = fast.next.next;
            slow = slow.next;
        }

        return true;
    }
}


标签:head,false,环形,fast,next,链表,null
From: https://blog.51cto.com/u_14813899/6487206

相关文章

  • 删除链表的倒数第N个节点
    删除链表的倒数第N个节点给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表:1->2->3->4->5,和n=2.当删除了倒数第二个节点后,链表变为1->2->3->5.说明:给定的n保证是有效的。解题思路:用两个指针一前一后遍历链表,两者相差n+1个节点,当前......
  • 环形链表 II
    环形链表II题目:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意,pos仅仅是用于标识环的情况,并不会作为参数传递到函数中......
  • 相交链表
    相交链表题目:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点c1开始相交。示例1:输入:intersectVal=8,listA=[4,1,8,4,5],listB=[5,0,1,8,4,5],skipA=2,skipB=3输出:Referenceofthenodewithvalue=8输入解释:相交节点的值为8(注意,如果......
  • 链表划分
    链表划分题目:描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例样例1:输入:list=nullx=0输出:null解释:空链表本身满足要求样例2:输入:list=1->4->3->2->5->2->nullx=3输出:1->2-......
  • 链表
    数组的内存空间是连续的,链表是不连续的链表分为单端链表和双端链表访问O(N)搜索O(N)插入O(1)删除O(1)写很快但是读很慢常用操作:1.创建链表2.添加元素3.访问元素4.查找元素5.删除元素6.链表的长度203给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.......
  • [C语言/PTA] 学生成绩链表处理
    题目要求本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:structstud_node*createlist();structstud_node*deletelist(structstud_node*head,intmin_score);函数createlist利用scanf从输入......
  • [C语言/PTA] 单链表结点删除
    题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,intm);......
  • [C语言/PTA] 建立学生信息链表
    题目要求本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:voidinput();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:structstud_node{intnum;/*学号*/charnam......
  • 数据结构和算法——旋转打印链表
    1、问题描述输入参数nn为正整数,如输入n=5n=5,则按行打印如下的数字:2、问题的理解这个问题是将数字1…n21…n2按照一圈一圈的方式......
  • 算法面试:单向链表节点的奇偶排序。
    给定一个单项链表,要求实现一个算法,把链表分成两部分,前一部分全是下标为偶数的节点,后一部分全是下标为奇数的节点,例如给定链表为下图的第一个队列,要求编写一个算法,将链表转换为第二个队列:要求算法不能分配多余的内存,同时,在操作链表是,不能更改节点内部的内容,只能更改节点的next指针......