题目:https://oj.leetcode.com/problems/swap-nodes-in-pairs/
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.
源码:Java版本算法分析:时间复杂度O(n),空间复杂度O(1)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
if(head==null || head.next==null) {
return head;
}
ListNode newHead=new ListNode(0);
ListNode cur=head,pre=newHead,next,nextnext;
while(cur!=null) {
next=cur.next;
cur.next=null;
if(next==null) {
pre.next=cur;
break;
}
nextnext=next.next;
next.next=cur;
pre.next=next;
pre=cur;
cur=nextnext;
}
return newHead.next;
}
}