面试算法-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;
    }
}
相关推荐
bo521008 分钟前
解决跨域的几种种方法, 你都知道几种?
前端·面试·浏览器
JoernLee14 分钟前
机器学习算法:支持向量机SVM
人工智能·算法·机器学习
V我五十买鸡腿22 分钟前
顺序栈和链式栈
c语言·数据结构·笔记·算法
我爱一条柴ya43 分钟前
【AI大模型】线性回归:经典算法的深度解析与实战指南
人工智能·python·算法·ai·ai编程
掘金安东尼1 小时前
前端周刊第421期(2025年7月1日–7月6日)
前端·面试·github
前端小巷子2 小时前
web从输入网址到页面加载完成
前端·面试·浏览器
三维重建-光栅投影2 小时前
VS中将cuda项目编译为DLL并调用
算法
课堂剪切板5 小时前
ch03 部分题目思路
算法
山登绝顶我为峰 3(^v^)36 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
Two_brushes.7 小时前
【算法】宽度优先遍历BFS
算法·leetcode·哈希算法·宽度优先