力扣 | 24. 两两交换链表中的节点

两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

输入:head = 1->2->3->4->5->NULL

输出:2->1->4->3->5->NULL

java 复制代码
 public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) return head; //确保了以下代码至少是两个节点

        ListNode dummyNode = new ListNode(-1);
        dummyNode.next = head;

        ListNode prev = dummyNode;
        ListNode first = head;
        ListNode second = head.next;
        while (second != null) {//确保两个节交换点中只有first这一个节点就不交换
            ListNode next = second.next;
            prev.next = second;
            second.next = first;//second是两个需要交换节点的最后面的那个节点
            first.next = next;

            prev = first;//prev总是总是两个
            first = next;
            if (first == null) break;
            second = first.next;
        }
        return dummyNode.next;
    }
相关推荐
ALISHENGYA16 分钟前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
chengooooooo18 分钟前
代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
算法·leetcode·职场和发展
jackiendsc25 分钟前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
姚先生9736 分钟前
LeetCode 54. 螺旋矩阵 (C++实现)
c++·leetcode·矩阵
游是水里的游2 小时前
【算法day20】回溯:子集与全排列问题
算法
yoyobravery2 小时前
c语言大一期末复习
c语言·开发语言·算法
Jiude2 小时前
算法题题解记录——双变量问题的 “枚举右,维护左”
python·算法·面试
被AI抢饭碗的人2 小时前
算法题(13):异或变换
算法
nuyoah♂3 小时前
DAY36|动态规划Part04|LeetCode:1049. 最后一块石头的重量 II、494. 目标和、474.一和零
算法·leetcode·动态规划
上学的小垃圾3 小时前
MPLS基础以及静态LSP的配置
运维·网络·算法