• 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 };
  • 相关阅读:
    extjs 为组件动态添加插件
    springboot使用spring-cloud-starter-alibaba-sentinel导致响应变成xml格式
    js 将数据保存到本地
    iframe跨域安全
    nginx url自动301加斜杠
    EXTJS防止表单中回车触发提交
    servlet
    Struts1和Struts2的区别
    AWT和Swing的简记
    sleep()和wait()
  • 原文地址:https://www.cnblogs.com/wmx24/p/9084952.html
Copyright © 2020-2023  润新知