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

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

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

文档讲解:代码随想录

视频讲解:帮你把链表细节学清楚! | LeetCode:24. 两两交换链表中的节点_哔哩哔哩_bilibili

1. 第一想法是不知道这个题如何做,知道有改变指针这个操作。

2. 双指针也太好用了,用双指针整个过程就是一个双指针移动加修改指针的过程,就像织毛衣一样的感觉。这里竟然要保存两个临时指针变量。

3.要保存两个临时指针变量,结合示意图分析实现起来还可以,主要是指针赋值那里想清楚,输入用例一遍过。

4.分析能否用双指针的意识,这个编程题用了半个小时左右。

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

文档讲解:代码随想录

视频讲解:链表遍历学清楚! | LeetCode:19.删除链表倒数第N个节点_哔哩哔哩_bilibili

1. 第一想法先计算得到链表的总长度,根据倒数多少个节点计算正向应该遍历多少个节点count,然后正向遍历到了待删除结点的前一个结点执行删除操作。

2.用双指针正好表示了倒数多少个这个概念,先让快指针移动n+1个位置(不是移动n位是因为用了虚拟头节点,然后需要在待删除结点的前一个节点才能执行操作),然后一起移动快慢指针,当快指针到达链表末尾的位置,慢指针在的位置正好是待删除的元素的前一个节点位置,执行删除操作即可。

3.快慢指针开始时指向虚拟头节点,然后可以通过一个示意图来推导一下执行n+1才是对应待删除节点的前一个位置,一起移动快慢指针循环的边界条件时fast指针是否为空,而不是fast.next,可以想一想fast指针应该是在最后一个节点的位置,此时fast指针的下一个节点为null,不能进入循环执行移动操作,正好满足fast指针在最后一个节点位置。

4.一起移动快慢指针循环的边界条件时fast指针是否为空,而不是fast.next,可以想一想fast指针应该是在最后一个节点的位置,此时fast指针的下一个节点为null,不能进入循环执行移动操作,正好满足fast指针在最后一个节点位置。这个题目用了接近一个小时的时间。

面试题 02.07. 链表相交

文档讲解:代码随想录

1.看不懂题

2.再回去读题,大致懂了是需要先找出最短的链表,最极端的就是短的链表头节点就是相交的位置,这种链表相交可以节省计算机的存储空间,找到这两个链表长度的差值dista后,将长链表的cur指针向后移动这个差值(正数)个位置,然后从这里依次遍历长短链表,对应位置指针相同则返回,遍历完都没有找到指针相同的位置则返回null.

3.根据链表长度不同执行了两端差不多的代码,后一段代码拷贝过来时没有将循环的条件改过来,导致用例报错。用了一个小时左右,主要时题干没有读懂。

142.环形链表II 

文档讲解:142. 环形链表 II - 力扣(LeetCode)

视频讲解:把环形链表讲清楚! 如何判断环形链表?如何找到环形链表的入口? LeetCode:142.环形链表II_哔哩哔哩_bilibili

1.不知道咋做

2.真聪明,又是双指针,数学证明有点多。

3.不熟悉这类需要数学推导证明的编程题,完全没有想到用数学方法。

4.数学推导证明完了,用结论写代码实现起来比较简单,这个题先背方法,一刷就先记得这个结论吧,先不追求掌握的很深入,二刷深入研究一下。

相关文章:

  • 【python】OpenCV GUI——Mouse(14.1)
  • 17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波
  • 基于websocket与node搭建简易聊天室
  • 【数据分析基础】实验numpy、pandas和matplolib
  • Python中的Pandas数据处理与分析
  • Virtualbox 安装 ubuntu + qemu
  • 【WRF理论第四期】namelist.wps文件详述
  • 前端工程化工具系列(十)—— Browserslist:浏览器兼容性配置工具
  • VS环境Python:深度探索与实用指南
  • 在Nginx中配置php程序环境。
  • Kafka之Broker原理
  • 8.3 Go 包的组织结构
  • 轻松搞定阿里云域名DNS解析
  • cpp--lua--cpp执行lua
  • Qt/C++音视频开发76-获取本地有哪些摄像头名称/ffmpeg内置函数方式
  • 0基础学习移动端适配
  • JAVA多线程机制解析-volatilesynchronized
  • js
  • Promise面试题,控制异步流程
  • react 代码优化(一) ——事件处理
  • React中的“虫洞”——Context
  • 分享几个不错的工具
  • 回流、重绘及其优化
  • 每天10道Java面试题,跟我走,offer有!
  • 前端面试总结(at, md)
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 深度学习在携程攻略社区的应用
  • 【云吞铺子】性能抖动剖析(二)
  • ​flutter 代码混淆
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​你们这样子,耽误我的工作进度怎么办?
  • #70结构体案例1(导师,学生,成绩)
  • ${ }的特别功能
  • (3)llvm ir转换过程
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C#)获取字符编码的类
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (libusb) usb口自动刷新
  • (pycharm)安装python库函数Matplotlib步骤
  • (待修改)PyG安装步骤
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (南京观海微电子)——示波器使用介绍
  • (三)mysql_MYSQL(三)
  • (一) 初入MySQL 【认识和部署】
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)ABI是什么
  • (转)详解PHP处理密码的几种方式
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Winform开发笔记(一)
  • .NET 某和OA办公系统全局绕过漏洞分析