当前位置: 首页 > news >正文

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

非原创,搬运记录解题方法学习思路,一同进步

Day4

  • 备忘
  • 24. 两两交换链表中的节点
    • 思路
    • 代码
  • 19.删除链表的倒数第N个节点
    • 思路
    • 代码
  • 160. 相交链表
    • 思路
    • 代码
  • 142.环形链表II
    • 思路
    • 代码
  • 总结

备忘

完成三题并搞懂思路,将方法融汇贯通完成相关题目(0/1)

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

思路

设置哨兵节点node0,方便交换第一个节点node1和第二个节点node2。
已知节点为node0和node1
node2和node3都是基于node1,所以首先将node0指向node2,再将node2指向node1最后将node1指向node3,至此前两个节点完成交换。
当前节点顺序更新node进行下一轮转换:

代码

# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclassSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:node0=dummy=ListNode(next=head)node1=headwhilenode1andnode1.next:node2=node1.nextnode3=node2.nextnode0.next=node2 node2.next=node1 node1.next=node3 node0=node1 node1=node3returndummy.next

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

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

思路

双指针,滑动窗口。因为多加了一个哨兵节点,所以右边界走到n时,左边界开始走直到右边界走到链表最后,此时左边界为待删除节点的前一个位置。

代码

# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclassSolution:defremoveNthFromEnd(self,head:Optional[ListNode],n:int)->Optional[ListNode]:left=right=dummy=ListNode(next=head)forxinrange(n):right=right.nextwhileright.next:left=left.nextright=right.nextleft.next=left.next.nextreturndummy.next

160. 相交链表

思路

走完你的走你的,一定会在共同点遇到
记住就行

代码

# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = NoneclassSolution:defgetIntersectionNode(self,headA:ListNode,headB:ListNode)->Optional[ListNode]:p,q=headA,headBwhilepisnotq:p=p.nextifpelseheadB q=q.nextifqelseheadAreturnp

142.环形链表II

思路

双指针,利用快慢找到相遇点,给我一种做奥数的感觉。记住这里判断快慢指针要用is 和 is not不是判断值而是内存地址!

代码

# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = NoneclassSolution:defdetectCycle(self,head:Optional[ListNode])->Optional[ListNode]:slow=fast=headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextiffastisslow:whileslowisnothead:slow=slow.nexthead=head.nextreturnslowreturnNone

总结

刷题+写总结还是挺上瘾的,开始每天愿意写题目了,写博客是一个自我消化自我解读的过程。计划同时把灵神的基础算法题也写完,希望做得到吧。

http://www.cnnetsun.cn/news/1450865.html

相关文章:

  • vue学习一:vue框架快速入手
  • React核心语法:组件化与声明式编程
  • 基于千问大模型的向量相似度计算案例
  • 行业代码映射清洗
  • 【花雕学编程】Arduino BLDC 之AGV差速驱动机器人实现灵活转向
  • 【高并发风控场景必读】:为什么92%的Python实时风控系统在TPS>5000时开始丢事件?3个底层GC与GIL规避方案全公开
  • 1.8寸ST7735S+XPT2046触摸屏驱动移植与优化
  • 保姆级教程:Windows10修改Users文件夹名称后如何同步注册表设置
  • CreativeRobotix教育机器人Arduino库深度解析
  • 【技术解析】融合自适应频域优化与跨模态Transformer的CBCT-CT合成新范式
  • ImageNet vs. COCO:如何根据你的AI项目需求选择合适的数据集(附对比表格)
  • 告别数据抖动!树莓派DHT11温湿度监测的5个稳定性优化技巧
  • 3步搞定黑苹果EFI:让小白也能零代码配置的自动化工具
  • 保姆级教程:在VMware 17.5 Pro上搞定RHEL 9.6虚拟机安装(含UEFI/BIOS启动模式选择避坑指南)
  • 老设备如何重获新生?OpenCore Legacy Patcher系统升级完全指南
  • SecGPT-14B效果展示:对一段恶意LNK文件分析报告,关联T1566.001并给出EDR检测建议
  • 告别配置迷茫:手把手教你用Vivado 2023.1配置Xilinx FPGA的DDR4 MIG IP核(含AXI接口详解)
  • CoPaw快速上手:3步完成环境部署与JavaScript交互式应用开发
  • Loop:5分钟掌握Mac窗口管理的终极免费解决方案
  • 手机上网总断连?可能是APN设置出了问题!手把手教你排查与修复
  • 正点原子嵌入式Linux驱动实战:RTL8723DS SDIO WIFI驱动移植与联网全解析
  • jsontop.cn 介绍 - 一站式开发者工具集,JSON 格式化之外的全能助手
  • 麦克风阵列硬件测试全攻略:从同步性到一致性的实战避坑指南
  • 永磁同步电机转动惯量与阻尼系数辨识:带遗忘因子递推最小二乘法实战
  • 零基础入门Z-Image-Turbo-辉夜巫女:Web UI界面详解与快速出图技巧
  • STM32F407定时采样避坑指南:ADC+DMA配置常见问题与解决方案
  • 告别漫长等待:利用NSRR高效管理你的睡眠科研数据仓库(以NCHSDB数据集为例)
  • 手把手教学:DDColor在ComfyUI中的使用,修复黑白照片只需三步
  • OpenClaw个人食谱推荐:GLM-4.7-Flash根据食材生成菜单
  • 电压外环PI控制器