代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II

HALCON实战:用两个工业相机实现无缝大视野拼接(附完整代码与避坑指南) 本文详细介绍了使用HALCON软件实现双工业相机图像无缝拼接的完整解决方案,涵盖硬件配置、相机标定、坐标系转换和图像拼接等关键步骤。通过高精度标定和矩阵变换技术,可构建大视野检测系统,适用于液晶面板、PCB等工业检测场景,显著提升检测效率和精度。 阅读详情

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

使用虚拟头节点,prev和cur分别指向需要修改的pair的前面以及pair的第一个,使用tmp存储下一个pair的第一个节点防止丢失信息。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy_head = ListNode(0)
        dummy_head.next = head

        prev, cur = dummy_head, head

        while cur:
            if cur.next == None:
                return dummy_head.next
            tmp = cur.next.next
            cur.next.next = cur
            prev.next = cur.next
            cur.next = tmp
            prev = cur
            cur = tmp
        return dummy_head.next

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

快慢指针,快指针先走n步,随后快慢指针同时走到终点,slow指针即指向需要被删除的节点。

这里要注意,让slow指针指向被删除的前一个才能正确删除节点,因此修改while循环条件,让指针在需要删除的节点前面就停下。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy_head = ListNode(0)
        dummy_head.next = head
        slow, fast = dummy_head, dummy_head
        for i in range(n):
            fast = fast.next
        while fast.next:
            slow = slow.next
            fast = fast.next
        
        slow.next = slow.next.next
        return dummy_head.next

链表相交

先扫描一遍,看看有没有交点,有交点说明最后一个元素必定是一样的。记录俩链表长度,作差,再扫描一遍,用差值信息找交点。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        curA, curB = headA, headB
        cntA, cntB = 0, 0
        while curA.next:
            curA = curA.next
            cntA += 1
        while curB.next:
            curB = curB.next
            cntB += 1
        if curA != curB:
            return None
        else:
            curA, curB = headA, headB
            if cntA >= cntB:
                diff = cntA - cntB
                for i in range(diff):
                    curA = curA.next
                while curA != curB:
                    curA = curA.next
                    curB = curB.next
            else:
                diff = cntB - cntA
                for i in range(diff):
                    curB = curB.next
                while curA != curB:
                    curA = curA.next
                    curB = curB.next
            return curA

142.环形链表II 

这里是两个问题,1、找环,2、找环入口

先找环,如果链表有环,单指针遍历必进死循环;所以这里使用不同步长的双指针,快指针一次跳两步,满指针一次跳1步。如果没有环,必定遇到Null。

如果有环,计算入口,假设入口index=i,那么slow指针走了i步就到了入口,这时fast在2i处。假设fast已经在环内转了n圈,经过k个时间步,fast再次追上了slow, 因为他俩相对速度是1, 所以必定在一圈之内追上,假设从环口走了k步相遇,则相遇点距离环口k。环长就是i+k, 也就是slow走的距离。

题目要求找环入口,从上面的分析易知,再走i步就到环口了。 而根据上述定义,从起点走i步也是环口,问题也就解完了。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:
        slow, fast = head, head
        cnt = 0
        while fast and fast.next:
            fast = fast.next.next
            slow = slow.next
            cnt += 1
            if fast == slow:
                c = head
                while slow != c:
                    slow = slow.next
                    c = c.next 
                return slow
        return None

STM32测测速---编码电机读取速度的计算 速度计算:轮胎每转一圈的脉冲数取决于编码器的分辨率,可由下面公式进行计算:PPR是电机的线数最后可以计算轮胎每转一圈的脉冲数为:轮胎每转一圈的脉冲数 = 9.6 × 11 × 4 = 422.4最后的速度公式简化为:速度 = (0.01 秒内产生的脉冲数 ∗ 0.055 ∗ π )/(0.01 ∗422.4​。 阅读详情

相关推荐

基-2 16点fft的verilog实现

本文是采用输入8位数据,输出8位数据的16点fft实现,旋转因子采用8位rom存储,分为cos和sin2个rom存储;输入数据以及每一级的输出数据采用8位的ram进行存储,分为实部和虚部进行存储。采用顺序输入,那么输出则为倒序。生成rom,可先在matlab中,计算出cos和sin的值,然后写入coe文件,再由ip核生成,具体过程自行百度,懒得百度的话,可以发我的邮箱来获得具体的程序。因为本文采用...

juniorofMFC的博客 9992

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 , 142.环形链表II

力扣算法

LXY999222的博客 2293

工程制图习题集张大庆课后习题答案解析

所以,我想向大家求助,希望能得到一些学习资料、学习方法和学习经验,帮助我更好地理解和掌握这门课程。在寻找学习资料的过程中,我发现了一款叫做资小料的APP,它里面有很多关于工程制图的学习资料,包括视频教程、习题解答和考试真题等。通过使用资小料,我逐渐掌握了工程制图的基本理论和方法,解决了很多学习中遇到的问题。在这里,我想推荐给和我一样在学习《工程制图习题集》这门课的同学们,希望大家也能从这款APP中受益,共同进步。上传者: 『Consentesdei』蒼迷穀。出版社: 清华大学出版社。

weixin_58833001的博客 926

代码随想录算法训练营第四天 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

对于有增删改,用虚拟头结点而对于只有查操作的时候,无需使用。

U_L_Yxan的博客 2124

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

Qt + Robot Interface实现上位机和发那科机器人通信

摘要: 本文详细介绍了FANUC机器人的RobotInterface模块开发流程,包括环境配置、通信连接和上位机开发等内容,并提供了数值寄存器、位置寄存器和当前位置的读写代码等示例。适用于自动化行业有通讯需求的上位机开发人员,保姆教程,超详细版,新手也可以根据示例开发自己的通信程序。

xyhkma的博客 1750

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、面试题 02.07. 链表相交、19.删除链表的倒数第N个节点、142.环形链表II

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。由于快指针一次走两个节点,慢指针一次走一个节点,所以两者的相对速度为1,只要有环,两者一定会在环中相遇。

2301_80082921的博客 2343

FastAPI + Layui:打造企业级敏捷开发后台管理系统

本文详细介绍了如何使用FastAPI和Layui构建高效的企业级后台管理系统。FastAPI提供高性能的异步API支持,而Layui则简化了前端开发流程,两者结合可实现快速开发和部署。文章涵盖了从环境搭建、核心组件开发到性能优化的全流程,特别适合需要敏捷开发的企业项目。

weixin_29045585的博客 555

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

参考视频图1.1:交换链表节点示意图如上图所示,要交换1、2两个节点其实还涉及到cur和3两个节点。观看完参考视频和动图之后我总结出以下答案:一.节点交换就从左到右去进行就可以了。二.多少个temp取决于从左到右模拟的过程中有哪些节点找不到。所以综上所述,我们需要两个临时节点tmp,tmp1,分别用来保存节点1和节点3。接下来还有一个小细节:1.遍历的终止条件如何确定?卡哥说19.删除链表的倒数第N个节点删除某一个节点需要它的前置节点。但怎么样遍历一遍就可以去删倒数第n个节点我没想明白。

C_J314的博客 1730

科研党福音:如何用Zotero+Paper Agent打造你的AI论文速递系统(附详细配置教程)

本文为科研工作者提供了一套利用Zotero和开源工具Paper Agent构建自动化AI论文速递系统的详细教程。该系统能基于用户在Zotero中的文献库智能学习研究兴趣,每日自动从arXiv等平台筛选、下载并深度解读最相关的前沿论文,生成个性化日报,实现从被动接收到主动精准获取的知识工作流重塑。

kite3的博客 515

windows使用jupyter notebook读取文件路径的几种方法和设置默认打开路径

简单分享小虎这段时间以来学到的jupyter notebook操作技巧。

狂小虎/Anthony Dave的博客 KuangXiaoHu's Blogs 1万+

代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II、总结

注意不要断链,更新之前用临时指针存储节点。如何找到倒数第n个节点注意虚拟头节点定义最后返回的头节点是dummy ->nextfree掉dummy面试题 02.07. 链表相交如何找到相交节点。142.环形链表II双指针思路。

weixin_46027322的博客 1528

全网最全-DA14531-全球最小-BLE从入门到精通开发教程

本教程主要适用于低功耗产品,DA14531它体积小,非常适用于对体积敏感的设备,如无线可穿戴、传感器、助听器等设备。本文经过作者发大量时间来记录开发项目的调试方法,里面有许多笔者开发心得体会,旨在让读者工程师快速上手,减少摸索时间,提高软件质量。读者对象本文档主要适用以下工程师:嵌入式系统工程师单片机软件工程师IOT固件工程师BLE固件工程师。

hejinwu1314的博客 5138

代码随想录算法训练营第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交、142.环形链表II。

又因为快指针每次走两步,慢指针每次走一步所以2slow = fast,代入化简得到x=(n-1)(y+z)+z,n是快指针与慢指针相遇前走过的圈数,因为快指针先进环所以n一定是大于1的。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。在两两反转时以两个节点为组,需要考虑前一个节点的指向,因为单链表遍历时无法回溯到之前节点,所以这里需要用到双指针,然后就是。观察两个链表,相交节点是两个链表同时拥有的节点,所以使用哈希表能够快速的找到重复的节点。接上,因为y+z是圈的周长,所以x=z,

weixin_70036423的博客 1355

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

北天的博客 1044

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

代码随想录算法训练营第四天 |24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针。,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。双指针,先让两个指针各自指向头结点,然后让两条链表末端对齐,求出链表长度插值,让curA移动到curB位置对齐的地方。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

maiyunzhang的博客 1070

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

代码随想录算法训练营第四天|24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II

3.用临时指针保存下一个节点值,在让下一个节点值赋值为下下个节点值,移动指针到下下个节点,把当前节点值赋值为临时指针中存储的值。如果n合理,进入循环让size--,找到要删除的前一个节点,让其指向下下个节点,跳过要删除的节点。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。

2301_79744698的博客 1190

代码随想录算法训练营第四天|24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II,总结

最近的题比较难,我只能边学边做边写博客(;′⌒`)。目录24. 两两交换链表中的节点题目:思路:19.删除链表的倒数第N个节点题目:思路:面试题 02.07. 链表相交题目:思路:142.环形链表II题目:思路:总结给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。首先老两样----dummyhead结点和current结点,方便之后的操作。用current结点对链表进行遍历,一次while循环current结点移动两位。注意

2302_77519551的博客 1204

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ;19.删除链表的倒数第N个节点;02.07. 链表相交(面试题);142.环形链表II

1. 24. 两两交换链表中的节点 :用虚拟头结点;使用temp指针保存临时节点。建议先看视频。2. 19.删除链表的倒数第N个节点:双指针的操作;注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。3. 02.07. 链表相交(面试题):本题没有视频讲解,大家注意 数值相同,不代表指针相同。4. 142.环形链表II :双指针的操作;是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。

weixin_44334392的博客 1665

代码随想录算法训练营第四天|LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07链表相交、142.环形链表II

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。当然,还是需要构建虚拟头节点,采用双指针,让一个先走N,然后两个同时再将剩下的走完,就确定了N-1的位置。1、获取两个链表的差值,设置两个指针,让长链表的指针先走差值,然后两个指针一起走,看看会不会相遇。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。

m0_56399733的博客 1296

代码随想录算法训练营第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、 142.环形链表II

帮你把链表细节学清楚!| LeetCode:24. 两两交换链表中的节点_哔哩哔哩_bilibili《代码随想录》视频讲解开讲啦!快来打卡!| 二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序,leetcode-链表篇 24题 两两交换链表中的节点,【LeetCode 每日一题】24. 两两交换链表中的节点 | 手写图解版思路 + 代码讲解,2.9 双向链表及操作思路: 添加一个虚拟头节点,然后正常按两两一队更改位置。

qq_73932604的博客 730

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、 19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、 142.环形链表II

代码随想录第四天| 24. 两两交换链表中的节点、 19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、 142.环形链表II

2301_81109252的博客 951

代码随想录算法训练营第四天-24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II 、总结

24. 两两交换链表中的节点24. 两两交换链表中的节点帮你把链表细节学清楚!| LeetCode:24. 两两交换链表中的节点目标:状态:独立使用虚拟头节点AC学完链表后至少需要熟悉一下几种常用的方法:双指针法:快慢指针、左右指针虚拟头节点一些常用的技巧2024/2/24后续会补充。

m0_64615322的博客 984

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II

qq_52421969的博客 859

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交,142.环形链表II

一定要画图!双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点注意数值相同,不代表指针相同不仅考察对链表的操作,而且还需要一些数学运算。

weixin_68724534的博客 2027

代码随想录算法训练营第四天 |24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题02.07.链表相交,142、环形链表II

那么相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。从相遇节点 再到环形入口节点节点数为 z。双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。

wufaqidong1的博客 1124
上一篇: 代码随想录算法训练营第三天 | 203.移除链表元素 、707.设计链表 、 206.反转链表
下一篇: 代码随想录算法训练营第六天 | 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
LIEBESFREUD
博客等级 码龄9年 372粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值