首页 > 其他分享 >24. 两两交换链表中的节点

24. 两两交换链表中的节点

时间:2024-10-17 10:20:55浏览次数:5  
标签:24 head ListNode 交换 next 链表 节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:

输入:head = []
输出:[]
示例 3:

输入:head = [1]
输出:[1]

解题思路:
1.递归方法实现节点对的交换,首先到达链表的末尾,然后逐步交换回链表的开头

完整代码:
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        /**
         * 公共方法交换节点对
         * 该方法作为对外接口,提供一对节点的交换功能
         *
         * @param head 链表的头节点
         * @return 交换后的链表头节点
         */
        public ListNode swapPairs(ListNode head) {
            return swap(head);
        }

        /**
         * 递归方法实现节点对的交换
         * 该方法用于递归地交换链表中的每一对节点
         * 它的工作原理是首先到达链表的末尾,然后逐步交换回链表的开头
         *
         * @param head 链表的当前头节点
         * @return 交换后的当前链表的头节点
         */
        public ListNode swap(ListNode head){
            // 当链表为空或只有一个节点时,不需要交换,直接返回原链表
            if(head == null || head.next == null){
                return head;
            }
            // 获取当前节点的下一个节点,这是即将交换的节点
            ListNode next = head.next;
            // 递归交换后续节点对,并将当前节点连接到交换后链表的末尾
            head.next = swap(next.next);
            // 将下一个节点连接到当前节点,完成这一对节点的交换
            next.next = head;
            // 返回交换后的链表头节点,即原链表中当前节点的下一个节点
            return next;
        }
    }

标签:24,head,ListNode,交换,next,链表,节点
From: https://www.cnblogs.com/java-cheng/p/18471517

相关文章

  • 采用黑白仪表盘风格提高清晰度-Stimulsoft Dashboards.JS 2024.4.1
    采用黑白仪表盘风格提高清晰度2024年10月16日StimulsoftDashboards.JS2024.4.1采用了时尚、现代的设计和一致的报告格式,并采用了新的单色预设主题。StimulsoftDashboards.JS是一个JavaScript库,旨在在Web应用程序中构建交互式仪表板。......
  • 2024 最新 jetbrains GoLand 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 GoLand 等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具......
  • 2024 最新 jetbrains DataGrip 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 IDEA 等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具打......
  • 2024北森题库(含答案)
    "2024北森题库(含答案)"揭示了这是一份针对教育和考试领域的资源,特别是与北森题库相关的练习题目和解答。北森题库通常指的是由北森公司提供的各类考试模拟题集,涵盖了诸多考试科目,如公务员考试、事业单位招聘、教师资格证考试等。这份资料对于备考者来说是一份宝贵的参考资料,它提供......
  • 2024 最新 jetbrains PyCharm 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 PyCharm等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具......
  • 2024 最新 jetbrains PhpStorm 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 PhpStorm等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具......
  • 2024 最新 jetbrains WebStorm 2024.1.6 激活(亲测可用)
    注意:接下来本文分享免费激活 WebStorm等Jetbrains全家桶工具,一直支持到最新版本2024.1.6。 1.下载安装IDEA (mac、window、linux都支持)大家直接在官网下载最新版本,登陆官网,下载最新版本2024.1.4。一步一步确定安装,然后打开这里提示输入激活码,先关闭应用!!!2.下载激活工具......
  • 高级java每日一道面试题-2024年10月17日-Web篇-常见的web攻击有哪些?
    如果有遗漏,评论区告诉我进行补充面试官:常见的web攻击有哪些?我回答:常见的Web攻击种类繁多,攻击者利用各种漏洞和技术手段来入侵网站、窃取数据或破坏服务。以下是一些最常见的Web攻击类型及其简要说明:1.SQL注入(SQLInjection,SQLi)描述:攻击者通过在输入字段......
  • 【2024-10-16】连岳摘抄
    23:59一些不可控的力量可能会拿走你很多东西,但它唯一无法剥夺的是你自主选择如何应对不同处境的自由。你无法控制生命中会发生什么,但你可以控制面对这些事情时自己的情绪与行动。                              ......
  • 【2024-10-15】习于破圈
    20:00“给予”比接受更令人快乐,这并不是因为“给予”是丧失、舍弃,而是因为我存在的价值正在于给予的行为。                                                 ——艾瑞克......