面试算法-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;
    }
}
相关推荐
Doubbbbbbble云29 分钟前
基于贪心算法的区间覆盖问题求解策略4
算法·贪心算法
不会就选b7 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
千里码aicood10 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
做cv的小昊11 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
此时不提桶,更待何时11 小时前
05-03-B-ClickHouse与OLAP面试与生产事故实战
clickhouse·面试·nosql
لا معنى له11 小时前
World-In-World: World Models in a Closed-Loop World
算法
此时不提桶,更待何时12 小时前
03-04-B-连接池与DB治理面试与生产事故实战
mysql·面试
kaiyou202613 小时前
数据分析岗面试,如何把考证学到的知识讲成业务案例?
面试·数据挖掘·数据分析
Discipline102913 小时前
尼泊尔河流流量:天气驱动的预测与高流量风险
人工智能·算法