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

链表-两两交换链表中的结点

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

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

在这里插入图片描述
输入:头结点
输出:交换后的结点
思路
一次取出来两个结点,进行交换,然后结束条件是当前结点之后只有一个结点或者没有结点

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy = new ListNode(0, head);ListNode temp = dummy;while(temp.next != null && temp.next.next != null){ListNode node1 = temp.next;ListNode node2 = temp.next.next;temp.next = node2;node1.next = node2.next;node2.next = node1;temp = node1;}return dummy.next;}
}

使用递归

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if(head == null || head.next == null){return head;}ListNode newHead = head.next;head.next = swapPairs(newHead.next);newHead.next = head;return newHead;}
}

相关文章:

  • Halcon 的基础用法
  • C语言基础(day0424)
  • AI打开潘多拉魔盒?当深度伪造成为虚假信息的核动力引擎
  • 仓库体系结构风格-笔记
  • Unity 资源合理性检测
  • 数据完整性的守护者:哈希算法原理与实现探析
  • Python中random库的应用
  • ​Janus Pro
  • C++跨平台开发要点
  • 面试题:Java程序CPU 100%问题排查指南
  • Mermaid 绘图指南(二)- 使用 Typora 与 Mermaid 绘制专业图表
  • Qt 使用 MySQL 数据库的基本方法
  • redis集群的三种部署方式
  • 《ATPL地面培训教材13:飞行原理》——第1章:概述与定义
  • unity Animation学习,精准控制模型动画播放
  • Android PackageManagerService(PMS)框架深度解析
  • [创业之路-386]:企业法务 - 知识产权的刑事风险
  • 2025年3月电子学会青少年机器人技术(四级)等级考试试卷-理论综合
  • SpringBoot入门实战(第八篇:项目接口-订单管理)完结篇
  • 第九节:性能优化高频题-首屏加载优化策略
  • 国内锂矿“双雄”开局业绩PK:从巨亏中崛起,或深陷泥淖谋求多元转型
  • 缔造“水饺皇后”的香港,也是被移民塑造的香港
  • 美国证实加拿大及墨西哥汽车零部件免关税
  • 五一期间全国高速日均流量6200万辆,同比增长8.1%
  • 新华时评:防范安全事故须臾不可放松
  • “五一”逃离城市计划:带上帐篷去大自然里充电