相当于Reverse Nodes in k-Group这道题的简化版,固定k为2,每两个翻转一下,方法和思路也一摸一样。 要更简单一些。空间消耗为常数,时间消耗为O(n)。
/**
* 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 )
{
return head;
}
ListNode res = head;
int count=0;
boolean first=true;
ListNode pre=null;
ListNode st=head;
while( head !=null )
{
count++;
if( count==2 )
{
ListNode tmp=head.next;
head.next=st;
st.next=tmp;
if( pre != null )
{
pre.next=head;
}
if( first == true )
{
res = head;
first=false;
}
pre = st;
st = tmp;
head = tmp;
count=0;
}
else
{
head = head.next;
}
}
return res;
}
}