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

2025年- H28-Lc136- 24.两两交换链表中的节点(链表)---java版

1.题目描述

在这里插入图片描述

2.思路

cur指针要先放在虚拟头节点,才能去操作第一个数和第二个数
先判断偶数个节点,再判断奇数个节点,否则会犯空指针异常。
(1)如果节点是偶数个节点,只要满足curr.nextnull,就说明遍历结束了
(2)如果节点是奇数个节点,只要满足curr.next.next
null,说明遍历就结束了
(3)如果是0个节点。curr指向的是虚拟头节点,所以也满足curr.next=null
(4)在赋值操作之前,定义一个临时变量,保存节点1(curr.next)
(5)在赋值操作之前,也需要定义一个临时变量,保存节点3(curr.next.next.next)
(6)要交换节点3和节点4的时候,要把curr从节点1移动到节点3,所以就要执行curr=curr.next.next。
(7)最后返回链表的头节点
在这里插入图片描述

3.代码实现

class ListNode{int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val,ListNode next) {this.val = val;this.next = next;}
}
public class H24 {public ListNode swapPairs(ListNode head) {//1.创建一个虚拟头节点ListNode dummyhead=new ListNode(0);dummyhead.next=head;//2.定义一个curr指针,curr==dummyhead,才能操作节点1和节点2ListNode curr=dummyhead;//3.while可以进行无限循环,终止条件就说偶数节点curr.next!=null才能交换,融合curr.next==null,说明已经到达最后一个节点//此处要&&,保证不会有空指针异常while(curr.next!=null&&curr.next.next!=null){//4.在第五步赋值之前,创建两个临时变量保留节点1和节点3ListNode temp1=curr.next;ListNode temp3=curr.next.next.next;//5.虚拟头节点指向节点2(现在==过去)curr.next=curr.next.next;//6.节点2的指针指向节点1curr.next.next=temp1;//7.节点1(此时节点1是temp1)的指针指向节点3temp1.next =temp3;//8.将cur指针移动到交换后1的位置,因为此时要交换3和和4了(2-》1-》3-》4)curr=curr.next.next;}return dummyhead.next;//返回头节点}public static void main(String[] args){H24 test=new H24();//创建1,2,3,4节点ListNode node4=new ListNode(4,null);ListNode node3=new ListNode(3,node4);ListNode node2=new ListNode(2,node3);ListNode head=new ListNode(1,node2);ListNode result = test.swapPairs(head);System.out.println("输出两两交换链表的结果:");while(result!=null){System.out.print(+result.val);if (result.next!=null){System.out.print("->");}result=result.next;}}
}
http://www.xdnf.cn/news/7016.html

相关文章:

  • 在超频单片机时,需要注意哪些稳定性问题?
  • 英语学习5.18
  • 深度估计中为什么需要已知相机基线(known camera baseline)?
  • 小白到高手的人工智能学习笔记之初步了解pytorch
  • 【图像生成大模型】HunyuanVideo:大规模视频生成模型的系统性框架
  • react深入2 - react-redux
  • LangChain框架实战:从入门到开发大模型应用
  • jupyter启动出现OSError: [Errno 28] No space left on device
  • LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项
  • 6.2.3+6.2.4十字链表、邻接多重表
  • Nginx配置与命令
  • 数据库中关于查询选课问题的解法
  • Appium自动化测试环境搭建及配置
  • [Linux]安装吧!我的软件包管理器!
  • 怎样免费开发部署自己的网站?
  • Spark 的运行模式(--master) 和 部署方式(--deploy-mode)
  • Linux进程信号(三)之信号产生2
  • Day29 类的装饰器
  • axios的基本使用
  • 网络安全利器:蜜罐技术详解
  • windows11 安装好后右键没有 git bash 命令
  • 【超详细】面试中问到事件循环(Event Loop)机制?
  • 【数据结构】树状数组
  • 基于 STM32 的汽车防盗报警系统设计与实现
  • FPR2100安装ASA镜像
  • 高效查询:位图、B+树
  • 聊一聊契约测试在接口测试中常见的应用场景
  • 互联网大厂Java面试场景:从缓存到容器化的技术问答
  • Spring源码主线全链路拆解:从启动到关闭的完整生命周期
  • 第四章:WebSocket 通信机制全解与客户端发包实录