首页 > 其他分享 >LeetCode142. 环形链表 II

LeetCode142. 环形链表 II

时间:2023-10-18 22:22:47浏览次数:35  
标签:II LeetCode142 cur val MIN 链表 遍历 节点

题目描述

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改链表。

示例

image

提交的代码

public class Solution {
    public ListNode detectCycle(ListNode head) {
        return recursionMethod(head);
    }

    public ListNode recursionMethod(ListNode cur){
        if(cur==null)return null;
        if(cur.val==Integer.MIN_VALUE)return cur;
        cur.val=Integer.MIN_VALUE;
        return recursionMethod(cur.next);
    }
}

思想

这里用到了深度遍历无向图中的递归方法:首先要将图中所有节点的标志位置为false,即所有图节点都未遍历过。如果遍历到当前节点,将当前节点的标志位置为true代表已经遍历的节点,当递归遇到节点的标志为true时,则代表当前图中有环。

题目的提示如下
image

-10^5<=Node.val<=10^5

而Integer.MIN_VALUE为-2147483648,一定超出这个val的界限的,所以方法类似,遍历过的节点就将它的val设置为Integer.MIN_VALUE,代表当前节点已经遍历过了,当递归遇到val值为MIN_VALUE的时候,就代表它是第一个环入口(因为题目中的链表是单向的,不像无向图,所以它一定是环的入口)。
当然了,我这个方法返回的节点中的值已经改变了,但是看着题目描述中系统判断的是链表中的pos,所以就抱着试试看的想法,取巧解决掉了。

标签:II,LeetCode142,cur,val,MIN,链表,遍历,节点
From: https://www.cnblogs.com/whitePuPigeon/p/17773499.html

相关文章

  • 代码训练营第八天(Python)| 344.反转字符串、541. 反转字符串II、05.替换空格、151.翻转
    344.反转字符串双指针法时间复杂度为:O(n),空间复杂度为:O(1)classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""left,right=0,len(s......
  • ACS系列(6) ACS QT版SPiiPlusClibraryDemo
    工程文件QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++17#YoucanmakeyourcodefailtocompileifitusesdeprecatedAPIs.#Inordertodoso,uncommentthefollowingline.#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x......
  • LeetCode02.07. 链表相交
    描述给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。示例提交的代码publicclassSolution{publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){//分别计算A和B链表......
  • [vue]精宏技术部试用期学习笔记 II
    精宏技术部试用期学习笔记(vue)router:vue的模拟路由前置准备安装vue-routerpnpmivue-router@4//安装版本4的vue-router可以在package.json文件中查看依赖"dependencies":{"vue":"^3.3.4","vue-router":"4"//这里},新建文件夹/src......
  • 面试必刷TOP101:5、合并k个已排序的链表
    一、题目二、题解顺序合并解题思路1、将k个链表配对并将同一对中的链表进行合并(采用顺序合并的方法)2、第一轮合并后,k个链表合并成了k/2个链表,平均长度2n/k,然后是k/4、k/8...等等3、重复这一过程,知道获取最终的有序链表importjava.util.*;/***Definitionforsingly-linke......
  • 大数据-拉链表模型
    拉链表是一种维护历史状态,以及最新状态数据的一种表。拉链表根据拉链粒度的不同,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户记录,实际上相当于快照。拉链表特征1)记录一个事物从开始,一直到当前状态的所有变化的信息;2)每次上报的都是历史记录的最终状态......
  • Day4 链表的基本操作2
    Day4链表剩下的基本操作Lc24给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。//画个图,弄个新节点,然后按照顺序进行连接,最主要的是连的时候思路要清晰classSolution{public:ListNode*......
  • Leetcode24. 两两交换链表中的节点
    题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例提交的代码classSolution{ListNodenextNode;publicListNodeswapPairs(ListNodehead){//特殊化处理......
  • 十天学完基础数据结构-第四天(链表(Linked List))
    链表的基本概念链表是一种线性数据结构,与数组不同,链表的元素(节点)之间通过指针相互连接。链表有以下基本概念:节点:链表中的每个数据项称为节点,每个节点包含数据和一个指向下一个节点的指针。头节点:链表的第一个节点称为头节点,它通常用来表示整个链表的起始位置。尾节点:链表的最后一个......
  • 代码随想训练营第四天(Python)| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点
    两两交换链表中的节点关键点:涉及到头节点变动的都使用虚拟节点。画图找出交换节点指向的顺序和退出循环的条件。1、迭代法classSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:dummy_node=ListNode(next=head)cur=......