执行用时 : 1 ms, 在所有 Java 提交中击败了81.92%的用户
内存消耗 : 34.7 MB, 在所有 Java 提交中击败了81.35%的用户
题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
注意: 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例: 给定 1->2->3->4, 你应该返回 2->1->4->3.
public class ExchangeLinked {
/**
* 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
*
* 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
*
* 给定 1->2->3->4,你应该返回 2->1->4->3.
*/
public static void main(String[] args) {
ListNode node = new ListNode(1);
node.next = new ListNode(2);
node.next.next = new ListNode(3);
node.next.next.next = new ListNode(4);
ListNode newNode = exchangeLink(node);
System.out.println(newNode.val);
System.out.println(newNode.next.val);
System.out.println(newNode.next.next.val);
System.out.println(newNode.next.next.next.val);
}
public static ListNode exchangeLink(ListNode head) {
if (head == null) {
return null;
}
if (head.next == null) {
return head;
}
ListNode newNode = new ListNode(head.next.val);
newNode.next = new ListNode(head.val);
ListNode listNode = exchangeLink(head.next.next);
newNode.next.next = listNode;
return newNode;
}
}