news 2026/7/17 19:37:29

JAVA练习298- 两两交换链表中的节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA练习298- 两两交换链表中的节点

题目概览

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

示例 1:

输入:head = [1,2,3,4]输出:[2,1,4,3]

示例 2:

输入:head = []输出:[]

示例 3:

输入:head = [1]输出:[1]

提示:

  • 链表中节点的数目在范围[0, 100]
  • 0 <= Node.val <= 100

来源:24. 两两交换链表中的节点 - 力扣(LeetCode)

解题分析

方法一:模拟 + 迭代

令相邻的两个节点为 a,b,交换的过程就是:

记录前一个节点,然后遍历链表进行交换即可。

时间复杂度:O(n)
空间复杂度:O(1)

/** * 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 node = head, pre = new ListNode(), result = pre; while(node != null && node.next != null) { pre.next = node.next; pre = node; ListNode temp = node.next.next; node.next.next = node; node.next = temp; node = node.next; } return result.next; } }

方法二:模拟 + 递归

参考一,每次调用该方法进行交换,然后 a 指针指向下一个交换的头节点(再调用该方法)。

时间复杂度:O(n)
空间复杂度:O(n)

/** * 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 result = head.next; // 交换 ListNode temp = head.next.next; head.next.next = head; head.next = swapPairs(temp); return result; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 19:35:39

一文读懂Kimi K3核心基础知识

写在前面 欢迎大家关注Rocky的公众号&#xff1a;WeThinkIn 欢迎大家关注Rocky的知乎&#xff1a;Rocky Ding 《三年面试五年模拟》AIGC/LLM/AI Agent算法工程师/开发工程师求职面试秘籍独家资源&#xff1a;【三年面试五年模拟】WeThinkIn/AIGC-Interview-Book&#xff0c;欢迎…

作者头像 李华
网站建设 2026/7/17 19:33:24

小红书笔记被判AI率高限流?把创作AI痕迹降到正常推荐

小红书笔记被判AI率高限流&#xff1f;把创作AI痕迹降到正常推荐 你大概经历过这种郁闷&#xff1a;一篇笔记选题、排版、配图都花了心思&#xff0c;发出去几个小时&#xff0c;浏览量却卡在两位数&#xff0c;赞和收藏几乎为零。你翻回去看数据&#xff0c;曝光一直上不去&a…

作者头像 李华
网站建设 2026/7/17 19:32:35

CNN经典模型演进:从AlexNet到ResNet的设计思想

1. CNN经典模型演进与核心设计思想 卷积神经网络&#xff08;CNN&#xff09;作为计算机视觉领域的基石架构&#xff0c;其发展历程中的几个里程碑式模型至今仍是工业界和学术界的参考标准。从早期LeNet-5的手写数字识别&#xff0c;到ResNet的深度突破&#xff0c;每个经典模型…

作者头像 李华
网站建设 2026/7/17 19:32:07

SOLO开发者AI编程工具实测:Vibe Coding与工程型AI选型指南

1. 这不是“又一个AI编程工具测评”&#xff0c;而是一份SOLO开发者的真实作战地图 我从2021年开始做独立开发&#xff0c;最早用Copilot写前端组件&#xff0c;后来试过十几款标榜“AI原生”的IDE插件&#xff0c;直到去年真正用上Vibe Coding模式——才意识到过去三年多数时间…

作者头像 李华
网站建设 2026/7/17 19:30:35

Obsidian 插件推荐

ToolkitPlugin for Obsidian ToolkitPlugin 是一款为 Obsidian 打造的综合功能增强插件&#xff0c;旨在通过一系列实用的微调和自动化功能来提升您的笔记工作流。 目前它主要解决了从 Wolai 等块式笔记系统导入数据后的结构痛点&#xff0c;并提供了自由的视觉控制。 &…

作者头像 李华