24. 两两交换链表中的节点

Posted 易小顺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24. 两两交换链表中的节点相关的知识,希望对你有一定的参考价值。

算法记录

LeetCode 题目:

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



说明

一、题目

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

二、分析

  • 连续两个节点进行交换,也就是每次反转长度为二的链表。
  • K 个数量节点反转类似,只是限定了数量为二。
  • 从头到尾进行遍历,每次进行两个节点的交换,步长为二。
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
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;
    }
}

总结

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

以上是关于24. 两两交换链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章

java刷题--24两两交换链表中的节点

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

[leetcode] 24. 两两交换链表中的节点

24. 两两交换链表中的节点

leetcode 24 - 两两交换链表中的节点

代码随想录算法训练营第四天 | 24.两两交换链表中的节点19.删除链表的倒数第N个节点160.相交链表142.环形链表II