zoukankan      html  css  js  c++  java
  • LeetCode 24. 两两交换链表中的节点(Swap Nodes in Pairs)

    题目描述

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    示例:

    给定 1->2->3->4, 你应该返回 2->1->4->3.

    说明:

    • 你的算法只能使用常数的额外空间。
    • 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    解题思路

    利用递归的思想,依次交换链表中的节点对。具体对于每个节点来说:

    • 若该节点为NULL,则直接返回NULL
    • 若该节点的下一个节点为NULL,则直接返回该节点
    • 交换该节点与下一个节点,利用辅助指针记录该节点的下一个节点,并递归的交换接下来的节点对

    代码

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* swapPairs(ListNode* head) {
    12         if(!head) return NULL;
    13         if(!head->next) return head;
    14         ListNode* temp=head->next;
    15         head->next=swapPairs(temp->next);
    16         temp->next=head;
    17         return temp;
    18     }
    19 };
  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/wmx24/p/9084952.html
Copyright © 2011-2022 走看看