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

Leetcode141-环形链表

时间:2024-11-17 19:15:56浏览次数:3  
标签:Leetcode141 head slow return 环形 fast next 链表 null

思路

链表判环方法:快慢指针法
其实没那么高级,很简单的理解就是,采用两个指针,一个每次走两步,一个每次走一步,如果链表有环,那么每次走两步的指针,也就是走得快的指针一定会追上走得慢指针。

代码

第一种写法:

// 写法1
public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null || head.next == null) return false;
        ListNode slow = head, fast = head.next;
        while(slow != fast){
            if(fast == null || fast.next == null){
                return false;
            }
            slow = slow.next;
            fast = fast.next.next;
        }
        return true;
    }
}

第二种写法:

// 写法2
public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null || head.next == null) return false;
        ListNode slow = head, fast = head;
        while(true){
            if(fast == null || fast.next == null){
                break;
            }
            slow = slow.next;
            fast = fast.next.next;
            if(slow == fast) return true;
        }
        return false;
    }
}

标签:Leetcode141,head,slow,return,环形,fast,next,链表,null
From: https://blog.csdn.net/qq_73179413/article/details/143836379

相关文章

  • 数据结构(单向链表)
    链式存储的优缺点:优点:1、动态分配内存:链式存储不需要在数据插入之前分配固定大小的数组或内存块,因此它更适合存储动态变化的数据2、高效的插入和删除操作:在链表中插入或删除元素只需要调整相邻节点的指针,不需要移动大量数据,因此时间复杂度通常为O(1)(在已知位置时)或O(n)(在......
  • C 语言 【单链表】
         单链表是一种基本的数据结构,由一系列节点组成,每个节点包含数据域和指针域。‌数据域用于存储实际的数据,而指针域则存储指向下一个节点的地址。单链表的特点包括动态存储、非连续存储、易于插入和删除。    节点可以定义成一个结构体,每个节点中包含一个数......
  • 114. 二叉树展开为链表
    题目链接解题思路:对于这类递归问题,采用「宏观」思考模式。对于任意一个节点A,左子树先「展开为链表」,右子树再「展开为链表」,然后A节点,将左子树的结果,和右子树的结果,「串在一起」即可。左子树展开为链表,所以要返回两个节点,一个是链表的头,然后是链表的尾。代码/***......
  • 【C++】list 类深度解析:探索双向链表的奇妙世界
    ......
  • 【数据结构副本篇】顺序表 链表OJ
    ......
  • C语言双相循环链表增删查改(带头节点)
    C语言双相循环链表增删查改(带头节点)最后一个节点的next指针指向第一个节点,第一个节点的prev指针指向最后一个节点定义链表节点#include<stdio.h>#include<stdlib.h>//内存管理,malloc(size_tsize)//链表节点结构体typedefstructNode{intdata;s......
  • 单向链表题库2(c++)
    目录前言[1.力扣——LCR123.图书整理I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/description/)[2.力扣——LCR024.反转链表](https://leetcode.cn/problems/UHnkqh/submissions/580256040/)[3.力扣LCR141.训练计划III](https://le......
  • 手搓双向循环链表
    文章目录前言一、链表的结构二、双向链表2.1概念与结构2.2实现双向链表总结前言上一篇我们学习了单链表的概念以及单链表的实现,但链表可不止单链表一种,今天我们来整体学习链表这个小小卡拉米,Follwme一、链表的结构链表的结构多种多样,有带头的不带头的,有单......
  • 单链表算法题(数据结构)
    1.反转链表https://leetcode.cn/problems/reverse-linked-list/description/题目:看到这个题目的时候我们怎么去想呢?如果我们反应快的话,应该可以想到我们可以从1遍历到5然后依次头插,但是其实我们还有更好的办法,就是利用三个指针,如何使用呢?反转链表OJ假如结构体已经给出t......
  • Leetcode 148. 排序链表
    给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。经典的分治算法应用,通过归并进行排序,需要用到一个与原数组相同长度的数组归(分割)思想如上图所示,代码实现通过快慢指针来寻找链表的中点来分割指针varspilitList=function(head){if(head===......