版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
LeetCode24 两两反转链表
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
递归:
public ListNode swapPairs(ListNode head) {
if (head==null || head.next==null) {
return head;
}
ListNode next = head.next;
head.next = swapPairs(next.next);
next.next = head;
return next;
}
迭代:
public ListNode swapPaires(ListNode head){
ListNode pre = new ListNode(0);
pre.next = head;
ListNode tmp = pre;
while(tmp.next !=null && tmp.next.next != null){
ListNode start = tmp.next;
ListNode end = tmp.next.next;
tmp.next = end;
start.next = end.next;
end.next = start;
tmp = start;
}
return pre.next;
}