您的位置:首页 > 其它

两两交换链表中的节点

2017-03-27 16:19 344 查看
 描述
 笔记

 数据

 评测

给一个链表,两两交换其中的节点,然后返回交换后的链表。

您在真实的面试中是否遇到过这个题? 

Yes

样例

给出 
1->2->3->4
, 你应该返回的链表是 
2->1->4->3

解题思路:用数组保存每个结点的地址,然后进行2-1-4-3class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
vector<ListNode *>t;
while(head!=NULL){
t.push_back(head);
head=head->next;
}
if(t.size()==1)return t[0];
for(int i=0;i<t.size();i++){
if(i&1)t[i]->next=t[i-1];
else{
if(i+2>t.size()-1)t[i]->next=NULL;
else if(i+2==t.size()-1)t[i]->next=t[i+2];
else if(i+3<=t.size()-1)t[i]->next=t[i+3];
}
}
return t[1];
}

-6-5进行模拟即可,注意判断奇偶。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: