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. 两两交换链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第四天 | 24.两两交换链表中的节点19.删除链表的倒数第N个节点160.相交链表142.环形链表II