面试算法-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;
    }
}
相关推荐
hetao17338373 小时前
2026-05-25~06-11 hetao1733837 的刷题记录
c++·算法
cheems95273 小时前
[算法手记] 滑动窗口最大值
算法
洛水水3 小时前
【力扣100题】82.有效的括号
c++·算法·leetcode
XGeFei3 小时前
时序算法 —— LSTM、ARIMA、随机森林
算法·随机森林·lstm
想要成为糕糕手4 小时前
JavaScript 异步编程完全指南
javascript·面试·promise
湖南天硕国产SSD4 小时前
工业存储可靠性进阶:天硕工业固态硬盘动态温控与寿命优化技术实践
网络·数据库·算法·工业存储·天硕存储·工业固态硬盘
legend050709ComeON4 小时前
常见面试题-leetcode
数据结构·算法·leetcode
Smilecoc4 小时前
决策树(一):决策树基本原理
算法·决策树·机器学习
weixin_307779134 小时前
从工具到协作者:AI在后端研发中的流程重构与组织赋能
人工智能·后端·python·算法·自动化
二十画~书生4 小时前
【LED 点阵驱动】- 面试高频问题全解
面试·职场和发展