首页 > 其他分享 >每日一题:Leetcode-24 两两交换链表中的节点

每日一题:Leetcode-24 两两交换链表中的节点

时间:2024-08-07 13:25:11浏览次数:20  
标签:24 head ListNode next 链表 swapPairs 节点 Leetcode

力扣题目

解题思路

java代码

力扣题目:

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

示例 1:

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

示例 2:

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

示例 3:

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

解题思路:

算法原理:

  • 通过递归的方式逐步交换相邻节点。

思路:

  • 首先判断链表是否为空或者只有一个节点,如果是则直接返回该链表。
  • 然后找到当前的两个节点,将它们交换位置,并让第一个节点(原来的第二个节点)的下一个节点指向递归处理后面节点后的结果,同时让原来的第一个节点成为新的第二个节点的下一个节点。

代码分析:

  • 在 swapPairs 方法中,先进行边界判断。
  • 接着确定新的头节点为原来的第二个节点。
  • 然后进行节点交换的操作,并通过递归继续处理后面的节点。

时间复杂度:O(n),需要遍历整个链表。
空间复杂度:O(n),递归调用栈的空间消耗。

java代码:

package org.example.mouth8;

public class Leetcode24 {
    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        head.next.next.next = new ListNode(4);
        head = swapPairs(head);
        while (head != null){
            System.out.println(head.val);
            head = head.next;
        }
    }
    public static ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = head.next;
        head.next = swapPairs(newHead.next);
        newHead.next = head;
        return newHead;
    }
}

更多详细内容同步到公众号,感谢大家的支持!

每天都会给刷算法的小伙伴推送明日一题,并且没有任何收费项

标签:24,head,ListNode,next,链表,swapPairs,节点,Leetcode
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/140989287

相关文章

  • Dreamforce '24重磅来袭!年度盛会将有何惊喜?
     作为Salesforce的旗舰会议,Dreamforce的历史已有20余年之久,是生态系统中的年度亮点。现如今,Dreamforce已经适应了线上受众的需求,通过Salesforce+提供直播和点播的参与方式。 近期,Salesforce宣布Dreamforce'24将于9月17日-19日举行,一年一度的科技盛会又要开始 Dreamforce......
  • 【ACM独立出版 | EI&Scopus检索稳定 | 高录用】2024年数字经济,区块链与人工智能国际学
    2024年数字经济,区块链与人工智能国际学术会议(DEBAI2024)为第五届大数据与社会科学国际学术会议(ICBDSS2024)的分会,将于2024年8月23-25日在中国-广州隆重举行。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“数字经济,区块链与人工智能等研究领域展开讨论......
  • 2024最新Mysql锁机制与优化实践以及MVCC底层原理剖析
    锁机制详解锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一......
  • 2024MySQL最新索引优化实战二
    分页查询优化示例表:CREATETABLE`employees`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(24)NOTNULLDEFAULT''COMMENT'姓名',`age`int(11)NOTNULLDEFAULT'0'COMMENT'年龄',`position`varchar(20)NOTN......
  • 【AI资讯早报】AI科技前沿资讯概览:2024年8月7日早报
    【AI资讯早报,感知未来】AI科技前沿资讯概览,涵盖了行业大会、技术创新、应用场景、行业动态等多个方面,全面展现了AI领域的最新发展动态和未来趋势。一、全球AI投资持续增长据国际数据公司(IDC)最新预测,到2027年,全球在人工智能解决方案上的支出预计将超过5000亿美元。这一数据揭......
  • 【题解】Solution Set - NOIP2024集训Day1 数据结构
    【题解】SolutionSet-NOIP2024集训Day1数据结构https://www.becoder.com.cn/contest/5429「CF1428F」FruitSequences线段树是可以维护区间最长子段的1。记固定右端点在\(i\),的答案为\(f_i\)。那么:\(a_i=0\),\(f_i=f_{i-1}\);\(a_i=1\),打一个单调栈维护所有的最长子......
  • [lnsyoj2240/luoguP3591]ODW
    题意给定一棵\(n\)个节点的树和数列\(a,b,c\),分别表示点权,移动序列和步长。在第\(i\)次移动中,将会从节点\(b_i\)移动到节点\(b_{i+1}\),步长为\(c_i\)。求移动时经过的所有点的点权之和。赛时0PTS赛后对于一条路径\(x\toy\),我们将其拆成\(x\tolca\toy\),这样,我们......
  • 题解:P10543 [THUPC 2024 决赛] 黑白
    好题。题意\(n\timesm\)的网格图初始每个格子有黑有白,两人轮流操作,每次选择一个白格染黑。操作后不能存在一条\((1,1)\)到\((n,m)\)的路径,否则本次操作者输,另一人赢。思路首先判断是否一上来就输了。易发现到最后一定会操作到只剩一条道路,设路径长度为\(s\),那么\(s\)......
  • leetcode数论(1232. 缀点成线)-几何
    前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。数论包含最大公约数(>=2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。描述给定一个数组 coor......
  • 企业常用的文件加密软件有哪些?2024文件加密软件TOP10排行榜
    随着信息安全的重要性日益增加,企业对文件加密软件的需求也在不断增长。2024年,市场上涌现了多种出色的文件加密解决方案,帮助企业保护敏感数据免受未经授权的访问。1.安秉网盾专为企业设计的加密系统,提供高强度的数据加密。提供全面的终端安全管理功能,包括上网行为管理、外......