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

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;}}
}

相关文章:

  • Java开发经验——阿里巴巴编码规范实践解析3
  • 创建指定版本的vite项目
  • 【Retinanet】训练自己的数据集
  • InfluxDB 3 Core + Java 11 + Spring Boot:打造高效物联网数据平台
  • LangChain框架实战:从入门到开发大模型应用
  • Pandas 构建并评价聚类模型② 第六章
  • 红黑树的实现
  • MidJourney生成王昭君全身像提示词
  • 学习是有方法的——费曼学习法
  • golang选项设计模式
  • 参考文献标准中与永久标识相关的PID、URN、DOI等概念的理解和区分
  • 【MyBatis-11】MyBatis批处理:提升数据操作性能的利器
  • 【LeetCode 热题100】17:电话号码的字母组合(详细解析)(Go语言版)
  • 【typenum】 11 私有模块(private.rs)
  • 开机自启rc.local
  • ctr查看镜像
  • 需求文档不完整,如何确保开发理解一致?
  • STM32八股【9】-----volatile关键字
  • 学习!FastAPI
  • ubuntu安装vmware启动虚拟机失败
  • 【社论】进一步拧紧过紧日子的制度螺栓
  • 媒体报道一民企投资400万运营出租车4年未获批,广西隆林县回应
  • 牛市早报|上市公司重大资产重组新规出炉,4月经济数据将公布
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案