面试算法-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;
    }
}
相关推荐
填满你的记忆3 分钟前
《动态规划-基础篇》
算法·动态规划·力扣
禅思院3 分钟前
大列表性能优化 · 面试精讲 · 一
面试·职场和发展·性能优化
进击的荆棘4 分钟前
优选算法——队列+宽搜
数据结构·c++·算法·leetcode·bfs·队列
黎阳之光6 分钟前
虚实同源·数智治水:黎阳之光视频孪生,重构智慧水务新范式
运维·物联网·算法·安全·数字孪生
江屿风8 分钟前
C++OJ题经验总结(竞赛)4
开发语言·c++·笔记·算法·dp·双指针
Deep-w8 分钟前
【MATLAB】微电网四DG逆变器下垂策略与分布式MPC协同控制仿真分析
开发语言·分布式·算法·matlab
JAVA9659 分钟前
JAVA面试-并发篇 02-synchronized 锁可以重入吗
java·面试
手写码匠10 分钟前
华为云Flexus+DeepSeek征文|万字实战:MaaS 推理服务 + Dify 高可用部署 + AI Agent 开发全流程
人工智能·深度学习·算法·aigc
yu859395810 分钟前
基于卡尔曼滤波器的集中式机器人轨迹定位算法
算法·机器人
进击的荆棘15 分钟前
优选算法——栈
数据结构·c++·算法·leetcode·