面试算法-163-两两交换链表中的节点

题目

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

示例 1:

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

输出:[2,1,4,3]

java 复制代码
class Solution {
    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode p1 = dummy;
        ListNode p2 = head;
        ListNode p3 = head.next;
        ListNode next = null;
        while (p3 != null) {
            next = p3.next;

            p1.next = p3;
            p3.next = p2;
            p2.next = next;

            p1 = p2;
            p2 = next;
            p3 = p2 == null ? null : p2.next;
        }
        return dummy.next;
    }
}
相关推荐
张元清4 小时前
React Hooks vs Vue Composables:2026 年全面对比
前端·javascript·面试
Eward-an4 小时前
【详细解析】删除有序数组中的重复项 II
数据结构·算法
sg_knight4 小时前
OpenClaw 能做什么?几个真实使用场景说明
算法·ai·大模型·llm·agent·openclaw·小龙虾
嫂子开门我是_我哥4 小时前
心电域泛化研究从0入门系列 | 第七篇:全流程闭环与落地总结——系列终篇
人工智能·算法·机器学习
爱学习的小囧4 小时前
零门槛!VCF 自动化环境登录 vSphere Supervisor 全教程
运维·服务器·算法·自动化·vmware·虚拟化
Book思议-4 小时前
线性表之顺序表入门:顺序表从原理到实现「增删改查」
数据结构·算法
I_LPL4 小时前
day52 代码随想录算法训练营 图论专题6
java·数据结构·算法·图论
爱敲代码的小黄4 小时前
Agent 能力模块化:Skill 设计与执行机制解析
人工智能·后端·面试
lxl13074 小时前
C++算法(11)字符串
开发语言·c++·算法
passxgx4 小时前
12.3 多维高斯分布与加权最小二乘法
线性代数·算法·最小二乘法