首页 > 其他分享 >代码随想录一刷day6 (链表day2)(链表完结)

代码随想录一刷day6 (链表day2)(链表完结)

时间:2024-11-02 15:19:25浏览次数:3  
标签:cur day6 随想录 相遇 next 链表 t1 指针

24. 两两交换链表中的节点

分三步走;

1.创建dummyhead

2.三个指针  cur   t1  t2

3.   cur->next=t2;    t1->next=t2->next;    t2->t1->next;  最后让cur=t1;

注意最后返回的是dummyhead-》next  而不是head;注意最后delete dummyhead

19.删除链表的倒数第N个节点

注意分析题意即可  

面试题 02.07. 链表相交

思路:目标:找到cur指针指向同一个地址的结点

分析:如果相交,相交之后的链表是一样的;所以选择遍历链表长度,找出小的,然后得出两个的差值p;

对长的,移动到p位置,然后cur_A,cur_B同时向后移动,如果遇到相等的,则返回cur,没有就返回nullptr;

142.环形链表II

思路:

分析:解1:直接用哈希表,遇到一个记录一个

解2:快慢指针,快的一次走2步,慢的一次一步

如果有环,则快慢指针会相遇

如果没换环,返回nullptr

有环的情况:入环位置推导:  

当快慢指针第一次相遇的时候设置一个慢指针从头跑,快指针咱不管他,之前的慢指针继续走。当第二个慢指针走到之前慢指针和快指针相遇的地方的时候,你会发现那个没停的慢指针是不是应该走了快指针的距离,那是不是两个慢指针应该在之前快慢指针相遇的地方又相遇了。如果想让两个速度一样的指针在环里相遇,那只有在他们入环的时候相遇才能在一起。所以由此可以推论出两个慢指针第一次相遇的时候就是入环的节点。

解1:

解2:

 

标签:cur,day6,随想录,相遇,next,链表,t1,指针
From: https://www.cnblogs.com/wzzz-blogs/p/18521779

相关文章

  • 【PAT_Python解 AC满分代码】1105 链表合并
    原题链接:PTA|程序设计类实验辅助教学平台Tips:以下Python代码仅个人理解,非最优算法,仅供参考!多学习其他大佬的AC代码!importsysdefmain():#读取链表头和节点数h1,h2,n=map(int,sys.stdin.readline().split())e=[0]*100010#存储数据ne......
  • 代码随想录一刷Day6--链表day1
    1.增加虚拟头节点,使头节点的移除跟别的移除统一(否则头节点需要让head指针往后移)2.删除节点的话,注意delete203.移除链表元素对链表的操作有点不熟悉ListNode*DummyHead=newListNode(0,head);  使用new进行虚拟头节点的创建删除tmp删除分支时,不用让cur=cur-》next 70......
  • C. DS循环链表—约瑟夫环 (Ver. I - B)
    题目描述N个人坐成一个圆环(编号为1-N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N=3,K=2,S=1。2号先出列,然后是1号,最后剩下的是3号。测试数据有多组,每组包括3个数N、K、S,表示有N个人,从编号为S的人开始,数到K出列。输入测......
  • 链表和数组的插入删除时间复杂度都是o(n),为什么说链表效率高
    链表和数组的插入删除时间复杂度都是o(n),链表效率高的原因:1.动态内存分配;2.插入和删除操作的局部性;3.避免数组的扩容和复制;4.无需移动大量数据;5.适用于频繁的随机插入和删除;6.简化数据结构维护。链表的节点可以在运行时动态分配内存,而数组在创建时需要分配固定大小的内存。......
  • 代码随想录|day3 链表 203.移除链表元素、707.设计链表、206.反转链表
    基础知识:代码随想录203.移除链表元素建议:本题最关键是要理解虚拟头结点的使用技巧,这个对链表题目很重要。这里主要记录用虚头的方法。即设置一个虚拟的头指针帮忙解题。先看代码:classSolution{publicListNoderemoveElements(ListNodehead,intval){ Li......
  • LeetCode23:合并K个升序链表
    原题地址:.-力扣(LeetCode)题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们......
  • 代码随想录算法训练营第三十三天|Day33 动态规划
    62.不同路径https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html视频讲解:https://www.bilibili.com/video/BV1ve4y1x7Eu思路int**initDP(intm,intn){int**dp=(int**)malloc(sizeof(int*)*m);inti,j;for(i=0;i<......
  • 链表和数组的区别
    链表和数组是两种常用的数据结构,本文旨在详细比较链表和数组的区别包括:1.存储方式不同;2.内存利用不同;3.访问元素的效率不同;4.插入和删除操作的效率不同;5.内存分配的灵活性不同;6.应用场景不同。通过这些比较,读者将更深入地理解两者的特点,以及它们在不同应用场景下的最佳使用方法。......
  • 单链表题+数组题(快慢指针和左右指针)
    @目录说明:本文章用于“单链表题+数组题”“链表”知识一、案例说明(使用快慢指针)问题1.1判断链表是否有环问题1.2:已知链表有环,请返回这个环的起点位置问题1.3:寻找无环单链表的中点,要求:如果偶数个数以左面一个节点为中点问题1.4:寻找无环单链表的中点,要求:如果偶数个数以右面一个节......
  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录404.左叶子之和计算给定二叉树的所有左叶子之和。(所有的左边的叶子节点的和)提供参数:根结点root关键思路:遍历,判断若为左叶子节点,则将值累加。主要操作:递归三要素1.返回值类型和参......