解題思路: 就照字面意思操作,可創造出原點方便操作,將原點接到第二個元素,第二個接第一個,以此類推,須注意反轉後最後一個元素一定要指向NULL,否則會TLE(太久沒寫,我都忘了QQ)
c++ code 如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* ori=new ListNode(0); if(head==NULL) return head; else if(head->next==NULL) return head; else ori->next=head->next; while(head->next!=NULL) { ListNode* temp=(head->next)->next; ListNode* temp1=head; (head->next)->next=head; head->next=NULL; if(temp==NULL) break; else { if(temp->next==NULL) temp1->next=temp; else temp1->next=temp->next; head=temp; } } return ori->next; } };
沒有留言:
張貼留言