leetcode-华为专题-24. 两两交换链表中的节点

 

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public: 
    // 举例 1-2->3->4
    ListNode* swapPairs(ListNode* head) {
        if(head==NULL||head->next==NULL)
            return head;
        ListNode* H = head->next; // H 指向2
        // ListNode* tmp = swapPairs(H->next);
        // head->next = tmp;
        // 上面两句可以合并为一句
        head->next = swapPairs(H->next); // 1的next指向3
        H->next = head;  // 2的next指向1 
        // 2->1->(再对里面进行递归)
        return H;
    }
};

 

posted @ 2021-08-16 17:40  三一一一317  阅读(37)  评论(0)    收藏  举报