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

[leetcode]24. Swap Nodes in Pairs

2016-11-01 18:43 471 查看
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代码

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode cur = head;
ListNode tmp = null,preHead=new ListNode(0);
preHead.next=head;
ListNode pre=preHead;
ListNode node1=null,node2=null;
while((node1=cur)!=null&&(node2=cur.next)!=null){
tmp = node2.next;
node2.next=node1;
node1.next=tmp;
pre.next=node2;
pre=node1;
cur=tmp;

}
return preHead.next;
}
}


go代码

/**
* Definition for singly-linked list.
* type ListNode struct {
*     Val int
*     Next *ListNode
* }
*/
func swapPairs(head *ListNode) *ListNode {
preHead:=&ListNode{
Val:0,
Next:head,
}
var node1,node2,cur,tmp,pre *ListNode
cur=head
pre=preHead
for (cur!=nil)&&(cur.Next!=nil){
node1=cur
node2=cur.Next
tmp=node2.Next
node2.Next=node1
node1.Next=tmp
pre.Next=node2
pre=node1
cur=tmp
}
return preHead.Next
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: