面试算法-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;
    }
}
相关推荐
黄金龙PLUS15 小时前
5个1024比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
心中有你021416 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
弈栈录16 小时前
基于 Spring Boot 构建生产级 AI 应用平台
后端·面试·架构
Omics Pro17 小时前
Cell封面|衰老生物学开源AI工具包
数据库·人工智能·算法·机器学习·自然语言处理
Moment18 小时前
如果你在做 RAG,可能会需要 pdf-inspector
前端·后端·面试
UIU11419 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
卷福同学1 天前
第一次当面试官有感
后端·面试
怕浪猫1 天前
顶级模型一句话,AI 写出了能玩的 QQ飞车
前端·面试·github
呃呃呃呃ex1 天前
9. TypeScript:从类型系统到工程实践
前端·面试
用户979984807181 天前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法