您的位置:首页 > Web前端 > Node.js

leetcode 24. Swap Nodes in Pairs

2016-05-30 16:26 489 查看

题目

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.

public  ListNode swapPairs(ListNode head) {
if(head == null){
return null;
}
// 当只有一个元素的情况
if(head.next == null){
return head;
}
ListNode i = head;  // i指向第1个
ListNode j = i.next;    // j指向第2个
ListNode k = j.next;    // k指向第3个

head = head.next;
while(j != null){
j.next = i;
if(k!=null && k.next!=null){    // 当有偶数个节点
i.next = k.next;
}else{      // 当有奇数个节点
i.next = k;
}

// 更新i,j,k的值,前进两格
i = k;
if(k != null){
j = k.next;
}else{
j = null;
}
if(k!=null && k.next!=null){
k = k.next.next;
}else{
k = null;
}
}
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode