Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
思路:肯定是递归方便啦,我们做好了base case,一直调用自己就能够了。 要是想不出来base case是什么,多理解理解就熟悉了
[java] view
plaincopy
plaincopy
- public ListNode swapPairs(ListNode head) {
- if(head==null) return null;
- if(head.next==null) return head;
- ListNode temp=head.next;
- ListNode forward=head.next.next;
- temp.next=head;
- head.next=swapPairs(forward);
- return temp;
- }