面试算法-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;
    }
}
相关推荐
小淮AI13 小时前
面试前 48 小时,怎样练表达和复盘:一份个人准备记录
面试·职场和发展
考研保研资料分享13 小时前
双非转专业保研海军军医大学心理学:四校考核、学年论文与择校复盘
面试
志起计算机编程14 小时前
Clickhouse的几个关键优势
算法
重生之小比特14 小时前
【算法拾光 7】双指针|两数之和 II - 输入有序数组 + 三数之和
算法
Navigator_Z14 小时前
LeetCode //C - 1304. Find N Unique Integers Sum up to Zero
c语言·算法·leetcode
计算机就业还在扩大14 小时前
第2期-cmp.Ordered+类型推断+刻意未支持的特性
后端·面试·golang
考研保研资料分享14 小时前
2023行政管理跨保华中师大政治学:五场考核、项目追问与择校
面试
考研保研资料分享1 天前
中国人民大学英语笔译保研面经:五校考核、视译口译与择校复盘
面试
企业数字化笔记1 天前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频