面试算法-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;
    }
}
相关推荐
骊城英雄12 小时前
Rust从入门到精通-trait
人工智能·算法·rust
可编程芯片开发13 小时前
基于PI控制算法的pwm直流电机控制系统Simulink建模与仿真
算法
怕浪猫13 小时前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
让学习成为一种生活方式13 小时前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
alphaTao13 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
2501_9269783314 小时前
提示工程的实战报告(二):模型的失败模式与边界行为
人工智能·深度学习·算法
小小晓.14 小时前
C++记:函数
开发语言·c++·算法
Revolution6114 小时前
第一次运行 Node.js:终端里的 JavaScript 怎样执行
后端·面试·node.js
casual~14 小时前
模逆元计算方法详解:扩展欧几里得算法与费马小定理
学习·算法·逆元
进击的程序猿~14 小时前
Go 并发底层原理面试学习指南
开发语言·面试·golang