问题描述:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
提示:
- 链表中节点的数目在范围
[0, 100]内 0 <= Node.val <= 100
上代码,拿去即可运行:
java
package onlyqi.daydayupgo06.leetcode;
import lombok.AllArgsConstructor;
import lombok.Data;
public class Leetcode24 {
public static void main(String[] args) {
ListNode listNode6 = new ListNode(6, null);
ListNode listNode5 = new ListNode(5, listNode6);
ListNode listNode4 = new ListNode(4, listNode5);
ListNode listNode3 = new ListNode(3, listNode4);
ListNode listNode2 = new ListNode(2, listNode3);
ListNode listNode1 = new ListNode(1, listNode2);
ListNode listNode = swapPairs(listNode1);
while (listNode != null) {
System.out.print(listNode.val + " ");
listNode = listNode.next;
}
}
public static ListNode swapPairs(ListNode listNode) {
ListNode dummy = new ListNode(0, listNode);
ListNode pre = dummy;
while (pre.next != null && pre.next.next != null) {
ListNode first = pre.next;
ListNode second = pre.next.next;
first.next=second.next;
second.next=first;
pre.next=second;
pre=first;
}
return dummy.next;
}
@Data
@AllArgsConstructor
static class ListNode {
int val;
ListNode next;
}
}
运行结果:

我要刷300道算法题,第150道 。 尽快刷到200,每天搞一道 。