LeetCode-两两交换链表中的节点

225 阅读1分钟

算法记录

LeetCode 题目:

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


说明

一、题目

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

二、分析

  • 连续两个节点进行交换,也就是每次反转长度为二的链表。
  • K 个数量节点反转类似,只是限定了数量为二。
  • 从头到尾进行遍历,每次进行两个节点的交换,步长为二。
class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode one = null, two = null;
        ListNode hair = new ListNode(-1, head);
        ListNode pre = hair;
        while(pre.next != null && pre.next.next != null) {
            one = pre.next;
            two = pre.next.next;
            one.next = two.next;
            two.next = one;
            pre.next = two;
            pre = pre.next.next;
        }
        return hair.next;
    }
}

总结

熟悉链表节点之间的交换方式。