首页 > 其他分享 >判断链表中是否有环

判断链表中是否有环

时间:2024-03-19 17:02:40浏览次数:19  
标签:p2 判断 next 链表 p1 有环 指针

描述
判断给定的链表中是否有环,如果有环则返回True,否则返回False
数据范围:链表长度\(0\le n\le 1000\), 链表中任意节点的值满足\(\mid val\mid \le 100000\)
输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。-1代表无环,其它的数字代表有环,这些参数解释仅仅是为了方便读者自测调试。实际在编程时读入的是链表的头节点。

解法思路:利用快慢指针,快指针前进2步,慢指针前进1步,如果有环,总能相遇,如果没环,则快指针会先行到达链表的尾部变为None

代码:

class Solution:
    def hasCycle(self , head: ListNode) -> bool:
        p1 = p2 = head
        while p2 and p2.next:
            p1 = p1.next
            p2 = p2.next.next
            if p1 == p2:
                return True
        return False

标签:p2,判断,next,链表,p1,有环,指针
From: https://www.cnblogs.com/bonne-chance/p/18083388

相关文章

  • vue3+element plus 判断文字是否溢出,溢出显示el-tooltip
    用到elementplus表格,:show-overflow-tooltip="true"属性在 "element-plus":"2.2.27",版本不支持修改el-tooltip文本的样式: 满足2点需求:①文字只有一行不显示悬浮框;②超出一行显示省略号,鼠标有悬浮框,且保留文本的换行效果。关键代码:<el-table-columnlabel="建议内容......
  • C语言判断回⽂字符串
    使用C语言判断这个字符串是否是回⽂字符串(字符串的长度小于等于30,字符串不包含空格),如果是回文字符串输出Yes,如果不是回⽂字符串输出No。回文串:是一个正读和反读都一样的字符串方法:1.使用两个指针分别放置在字符串的头和尾,进行比较,如果相同,则头++,尾–.不同则结束判断......
  • 142. 环形链表 II
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*detectCycle(structListNode*head){if(!head)returnNULL;structListNode*slow=head,*fast=head;while(fa......
  • java判断拼音字符串是不是汉字全拼
    publicstaticvoidmain(String[]args){Stringstr="wange";Stringstr1="huanggong";Stringstr2="wang文胜";Stringstr3="heihiyijiaren";Stringstr4="huangt......
  • mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
    时间:2018-03-2617:58:45一、首先说下本篇博客所实现功能的背景和功能是怎样的:   背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括增加新的流水分析,以及更新其他用户或者......
  • C++STL第五篇(链表List的使用方法)
    list链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相......
  • abc250E 判断集合前缀是否相等
    给定数组A[n]和B[n],有Q组询问,每次给出一组(x,y),问A中前x个元素构成的集合是否与B中前y个元素构成的集合相等?1<=n,q<=2e5;1<=a[i],b[i]<=1e9;1<=x[i],y[i]<=n可以用乘法和异或来实现对集合的哈希,另外需要借助一个set来避免重复元素对哈希结果的影响。#include<bits/stdc++.h>......
  • [学习记录]带头指针的单向链表的基本功能
    效果代码#include"stdio.h"#include"stdlib.h"typedefstructlinknode{ intdata; structlinknode*next;}LinkNode;LinkNode*CreateHeadNode(void);//创建头结点voidCreateNewNode(LinkNode*H);//创捷节点voidPrintList(LinkNode*H);//打印链表v......
  • C语言数据结构链表(无头结点)功能实现(增,删,改,查)
    #include<stdio.h>#include<stdlib.h>typedefstructLNode{   int data;   struct   LNode*next;}LNode,*LinkList; boolInitList(LinkList&L){    L=NULL;    return0; }boolinsert(LinkList&L,inti,intx){       ......
  • C#判断操作系统位数 - 开源研究系列文章
          今天将开发的那个校时管理器应用程序复制到公司的电脑上进行使用,结果运行的时候报错了,想着应该是操作系统位数不支持导致的,于是写了此文进行判断。(对于有源码的读者请自己编译程序为32位的进行使用)      该代码非常简单,就是判断一下句柄的位数:1、源码;......