当前位置: 首页 > web >正文

【递归】两两交换链表中的节点(medium)

两两交换链表中的节点(medium)

  • 题⽬描述:
  • 解法(递归):
  • 算法代码:

题⽬链接:24. 两两交换链表中的节点

题⽬描述:

给你⼀个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的
值的情况下完成本题(即,只能进⾏节点交换)。
⽰例 1:
输⼊:head = [1,2,3,4]
输出:[2,1,4,3]
⽰例 2:
输⼊:head = []
输出:[]
⽰例 3:
输⼊:head = [1]
输出:[1]
提⽰:
链表中节点的数⽬在范围 [0, 100] 内
0 <= Node.val <= 100

解法(递归):

算法思路:

  1. 递归函数的含义:交给你⼀个链表,将这个链表两两交换⼀下,然后返回交换后的头结点;
  2. 函数体:先去处理⼀下第⼆个结点往后的链表,然后再把当前的两个结点交换⼀下,连接上后⾯处理后的链表;
  3. 递归出⼝:当前结点为空或者当前只有⼀个结点的时候,不⽤交换,直接返回。
    注意注意注意:链表的题⼀定要画图,搞清楚指针的操作!

算法代码:

/*** 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{public ListNode swapPairs(ListNode head) {if(head == null || head.next == null) return head;ListNode tmp = swapPairs(head.next.next);ListNode ret = head.next;ret.next = head;head.next = tmp;return ret;}
}
http://www.xdnf.cn/news/14465.html

相关文章:

  • Oracle03-PL/SQL Developer
  • 深入解析Jersey框架及其与Spring MVC的核心差异
  • linux多线程之互斥锁
  • 影视剧学经典系列-梁祝-《吕氏春秋·应同》
  • 零基础学前端-传统前端开发(第四期-JS基础-语法,语句)
  • Git+Jenkins-Docker搭建企业级CI/CD平台
  • 电阻篇---上拉电阻的取值
  • Java 中的 JSON 转换
  • 《深度剖析:SCSS中混入(Mixin)为浏览器前缀赋能》
  • LeetCode 第78题:子集
  • android CALL 之 RIL、TELEDCOM、PHONE
  • 详细讲解BUUCTF-ciscn_2019_n_1
  • 6.11小测(html、css)
  • 【数据结构中哈希函数与哈希表】
  • 中国风系列简约淡雅通用PPT模版分享
  • 【Linux手册】进程的状态:从创建到消亡的“生命百态”
  • K8s集群平台
  • MySQL事务:从原理到实践
  • Elasticsearch9 + 通义大模型实现语义检索操作详解
  • LoRA核心公式
  • 语言模型是怎么工作的?通俗版原理解读!
  • 2.1 Windows VS2019编译FFmpeg 4.4.1
  • Qt QComboBox下拉多选
  • 【项目】仿muduo库one thread one loop式并发服务器前置知识准备
  • OmniMeetProTrack 全维会议链智能追录系统——山东大学软件学院创新实训项目博客(六)
  • 机器学习实验报告4-Logistic 回归算法
  • 如何设计一个既提供绘图Tools又提供example_data的MCP服务器:
  • vulnerable_docker_containement(hard难度)MSF内网穿透、docker逃逸、wpscan爆破。
  • vscode python debugger 如何调试老版本python
  • 论文略读:Personality Alignment of Large Language Models