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

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

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

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

解题思路

很麻烦的一道题目,不是很理解。还是看视频+文章才AC的。

解法1
public ListNode swapPairs(ListNode head) {ListNode dummy = new ListNode(-1);dummy.next = head;ListNode cur = dummy;ListNode tmp;ListNode firstNode;ListNode secondNode;while (cur.next != null && cur.next.next != null) {tmp = cur.next.next.next;firstNode = cur.next;secondNode = cur.next.next;secondNode.next = firstNode;firstNode.next = tmp;cur = firstNode;}return dummy.next;}

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

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

解题思路

很简单,因为之前刷过类似的题目,所以第一次就AC了。

解法1
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(-1);dummy.next = head;ListNode fast = dummy;ListNode slow = dummy;for (int i = 0; i < n; i++) {fast = fast.next;}while (fast != null) {fast = fast.next;slow = slow.next;}if (slow.next != null) {slow.next = slow.next.next;}return dummy.next;}

面试题 02.07. 链表相交

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

解题思路

我之前自己写的时候,就是卡尔的第二种思想。我觉得第一种太复杂了,还是掌握第二个算法就好。

解法1
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1 = headA;ListNode p2 = headB;while (p1 != p2) {if (p1 == null) {p1 = headB;} else {p1 = p1.next;}if (p2 == null) {p2 = headA;} else {p2 = p2.next;}}return p1;}

142.环形链表II

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

解题思路

很经典的一道题目,因为练得很多次,因此没啥难度。

解法1
public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {ListNode index1 = fast;ListNode index2 = head;while (index1 != index2) {index1 = index1.next;index2 = index2.next;}return index1;}}return null;}
http://www.lryc.cn/news/355357.html

相关文章:

  • 职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景
  • 深入理解C++智能指针系列(五)
  • 1.Nginx上配置 HTTPS
  • wordpress教程视频 wordpress教程网盘 wordpress教程推荐wordpress教程网
  • vue3 3D炫酷模型banner图
  • 小程序内使用路由
  • 【数据结构】第七节:堆
  • 前端大师-高级Web开发测验
  • 延迟初始化和密封类
  • Kotlin基础之基本语法
  • 多态(难的起飞)
  • 安装GO环境
  • 记一次由于代码原因导致Mysql连接被打满和唯一索引重复问题
  • redis数据类型之string,list
  • Android android.os.DeadObjectException aidl通信异常分析及解决
  • dp + 计数,1954D - Colored Balls
  • 【设计模式深度剖析】【5】【结构型】【桥接模式】| 以电视和遥控器为例加深理解
  • 一键安装脚本sh
  • WebGL在医学成像方面的应用
  • SpringBoot+layuimini实现角色权限菜单增删改查(layui扩展组件 dtree)
  • 项目范围管理
  • 监管端..
  • 点击登录按钮先检测输入框的规则检测(vue组合式)
  • 网络工程师---第四十二天
  • leetcode 1241每个帖子的评论数(postgresql)
  • 前端最新面试题(ES6模块篇)
  • STM32H750外设之ADC通道选择
  • 【Unity2D 2022:Cinemachine】相机跟随与地图边界
  • ssh远程连接的相关配置
  • 在leafet上画圆、多边形、线、矩形