给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
-6-5进行模拟即可,注意判断奇偶。
给出 1->2->3->4
, 你应该返回的链表是 2->1->4->3
。
解题思路:用数组保存每个结点的地址,然后进行2-1-4-3
class 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进行模拟即可,注意判断奇偶。