面试算法-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 小时前
Kotlin 协程与 suspend 原理详解
java·算法·kotlin
帷幕落秋4 小时前
进程服务与文件描述符
linux·运维·面试
程序员清风4 小时前
双指针与滑动窗口:高效处理连续区间
开发语言·算法
帷幕落秋4 小时前
信号、Ctrl 组合键与进程状态
linux·运维·面试
代钦塔拉4 小时前
【C++/Qt 进阶】设计模式系列(2):工厂模式——从游戏角色到披萨店
c++·算法·设计模式
思茂信息4 小时前
电磁仿真学涉及哪些算法?
人工智能·算法·数学建模·matlab·emc·电磁仿真·仿真辐射
糖果豆豆5 小时前
让 AI 自查三遍,它只会把错的说得更像对的——检查的人和被检查的,是同一个
算法·架构
预知同行5 小时前
Agent 开发正在降温,但「可治理」的火才刚点起来
面试
总裁余(余登武)6 小时前
K-means算法改进(Python版)
python·算法·kmeans
灯澜忆梦6 小时前
【面向对象编程c++】| 指针与自定义数据类型
开发语言·c++·算法