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

Q22 LeetCode142 环形链表

时间:2024-06-09 23:12:12浏览次数:13  
标签:head LeetCode142 ListNode next 链表 Q22 quickIndex node1 指针

1.使用快慢指针

2.快指针向后移动两个位置,慢指针向后移动一个位置

3.若快慢指针能相等,则有环

4.将一个指针指向head,一个指针指向fast,挨个向后遍历,相等即进环点

 

 1 public class Solution {
 2     public ListNode detectCycle(ListNode head) {
 3         ListNode quickIndex=head;
 4         ListNode slowIndex=head;
 5         while(quickIndex!=null&&quickIndex.next!=null ){
 6             quickIndex=quickIndex.next.next;
 7             slowIndex=slowIndex.next;
 8             if(slowIndex==quickIndex){
 9                 ListNode node1=quickIndex;
10                 ListNode node2=head;
11                 while(node1!=node2){
12                     node1=node1.next;
13                     node2=node2.next;
14                 }
15                 return node1;
16             }
17         }
18         return null;
19 
20     }
21 }

 

标签:head,LeetCode142,ListNode,next,链表,Q22,quickIndex,node1,指针
From: https://www.cnblogs.com/cff1/p/18240212

相关文章

  • Q21 LeetCode02.07 链表相交
    1.求出两链表长度2.分情况进行长链表头结点后移3.移至相同长度,两头结点一起后移,找到公共节点 1publicclassSolution{2publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){34ListNodecurA=headA;5ListNod......
  • Q20 LeetCode19 删除链表倒数第N个节点
    1.创建虚拟头结点ListNodepre=newListNode(0,head);2.创建快慢节点3.快节点fastIndex先往后移N个位置4.快慢slowIndex节点一直往后移,直至快节点到链表末尾5.删除慢节点后面的节点 1classSolution{2publicListNoderemoveNthFromEnd(ListNodehead,intn){......
  • 单链表相关面试算法题汇总
    技巧汇总快慢指针先找到中间节点如果要调用next..确保当前节点不为空。依次类推。.next不为空是否有环。走过的路。重新走。互相走。画图,分解,暴力法。用hashset插入法翻转。packagemainimport( "fmt" ."github.com/isdamir/gotype")funcAddLNode(h1,h2*L......
  • 链表--单链表
    引言:链表是一种常用的数据结构,在C语言中提供了一种灵活且高效的数据管理方式,它适用于那些需要频繁插入和删除操作的场景。链表的每个节点包含数据和指向下一个节点的指针,这种结构使得链表能够有效地利用内存,并且提供快速的插入和删除能力。然而,由于是动态分配的,访问链表中的元......
  • Q19 LeetCode24 两两交换链表节点
    1.注意节点交换顺序,以防节点丢失2.ListNodedummy=newListNode(0,head);定义空指针,并指向head节点 好语句3.还是虚拟头结点好用 1classSolution{2publicListNodeswapPairs(ListNodehead){3ListNodedummy=newListNode(0,head);4......
  • Q17 LeetCode707 设计链表
     无1classMyLinkedList{2intsize;3ListNodehead;45publicMyLinkedList(){6size=0;7head=newListNode(0);8}910publicintget(intindex){11if(index<0||index>=size)......
  • 代码随想录第4天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 0
    题目:24.两两交换链表中的节点思路:设置虚拟头结点,双指针+临时指针,(感觉也能递归,未尝试)时间复杂度:O(n)空间复杂度:O(1)坑:1.又忘了else{}和return2.试图访问空指针,多个条件的顺序问题及"&&""||"问题,cur->next要写在cur->next->next前面/***Definitionforsingly-linked......
  • Linux内核链表源代码
    /*SPDX-License-Identifier:GPL-2.0*/#ifndef_LINUX_LIST_H#define_LINUX_LIST_H#include<linux/types.h>#include<linux/stddef.h>#include<linux/poison.h>#include<linux/const.h>#include<linux/kernel.h>/**Simple......
  • AcWing 33:链表中倒数第k个节点 ← 尾插法
    【题目来源】https://www.acwing.com/problem/content/32/【题目描述】输入一个链表,输出该链表中倒数第k个结点。注意:  ●k>=1;  ●如果k大于链表长度,则返回NULL;【数据范围】链表长度[0,30]。【输入样例】输入:链表:1->2->3->4->5,k=2【输出样例】输出:4......
  • 链表-循环链表
    循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于最后一个元素指向下一个元素的指针(tail.next)不是引用undefined,而是指向第一个元素(head).单链表:this.tail.next=this.head;双向链表:this.tail.next=this.head;......