面试算法-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 小时前
十大排序算法
数据结构·算法·排序算法
aloha_7893 小时前
联易融测开面试准备
java·python·面试·单元测试
im_AMBER3 小时前
Leetcode 63 定长子串中元音的最大数目
c++·笔记·学习·算法·leetcode
hanxiaozhang20183 小时前
消息队列面试重点-1
面试·消息队列
小白程序员成长日记4 小时前
2025.11.29 力扣每日一题
数据结构·算法·leetcode
学历真的很重要4 小时前
LangChain V1.0 Short-term Memory 详细指南
后端·python·语言模型·面试·langchain·agent·ai编程
还是鼠鼠4 小时前
Redisson实现的分布式锁能解决主从一致性的问题吗?
java·数据库·redis·分布式·缓存·面试·redisson
咫尺的梦想0074 小时前
链表-反装链表
数据结构·链表
在黎明的反思5 小时前
进程通信之消息队列(IPC)
算法