LeetCode - M - Swap Nodes in Pairs

題意

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.

解法

記錄當前節點cur以及已完成交換的尾節點pre

實現

/**
 * 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) {
        if(head == NULL || head->next == NULL) return head;
        ListNode* cur = head;
        ListNode* pre = NULL;
        while(cur != NULL && cur->next != NULL){
            ListNode* next = cur->next;
            cur->next = next->next;
            next->next = cur;
            if(pre == NULL) {
                head = next;
            }else{
                pre->next = next;
            }
            pre = cur;
            cur = cur->next;
        }
        return head;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章