2017年8月21日 星期一

leetcode-24 Swap Nodes in Pairs

題意: 將linked list 中相鄰的元素做反轉(若最後一個不成對則不用反轉)

解題思路: 就照字面意思操作,可創造出原點方便操作,將原點接到第二個元素,第二個接第一個,以此類推,須注意反轉後最後一個元素一定要指向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;
    }
};

沒有留言:

張貼留言