反转单链表

简介: 反转链表1、题目2、思路3、代码4、递归方式代码

1、题目


定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。


示例:

输入: 1->2->3->4->5->NULL

输出: 5->4->3->2->1->NULL


2、思路


遍历链表,并在访问各节点时修改 next 引用指向


复杂度分析:

时间复杂度 O(N) : 遍历链表使用线性大小时间。

空间复杂度 O(1) : 变量 pre 和 cur 使用常数大小额外空间。


3、代码


class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur = head, pre = null;
        while(cur != null){
            ListNode tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
}


4、递归方式代码


class Solution {
    public ListNode reverseList(ListNode head) {
        //结束条件
        if(head == null || head.next == null){
            return head;
        }
        //递
        ListNode p = reverseList(head.next);
        //每一次执行的操作
        head.next.next = head;
        head.next = null;
        //归
        return p;
    }
}


相关文章
|
Java
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
2157 0
|
9月前
|
Android开发
通译灵码,果然不凡
我是一名全栈开发工程师,使用通义灵码个人版IDEA/DevEcoStudio/Android Studio进行程序开发。通过安装灵码插件,开发效率提升了约40%。安装步骤:进入Setting->插件->搜索“lingma”->点击安装。
333 3
|
9月前
|
算法 Java 数据库
美团面试:百亿级分片,如何设计基因算法?
40岁老架构师尼恩在读者群中分享了关于分库分表的基因算法设计,旨在帮助大家应对一线互联网企业的面试题。文章详细介绍了分库分表的背景、分片键的设计目标和建议,以及基因法的具体应用和优缺点。通过系统化的梳理,帮助读者提升架构、设计和开发水平,顺利通过面试。
美团面试:百亿级分片,如何设计基因算法?
|
存储 网络安全 数据安全/隐私保护
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
547 0
|
8月前
|
存储 人工智能 自然语言处理
人工智能与未来工作:机遇与挑战
【10月更文挑战第27天】 本文探讨了人工智能(AI)对未来工作的影响,重点分析了AI技术带来的机遇与挑战。通过具体案例和数据,展示了AI如何改变传统行业,创造新的就业机会,同时也提出了应对策略,帮助读者理解并准备迎接这一变革。
|
12月前
|
人工智能 监控 安全
云端智慧:智能园区的未来蓝图
云上智能园区代表了未来城市生活和工作的方向。通过云计算、大数据、人工智能等技术的应用,不仅可以提高园区的管理效率和服务质量,还能创造更加舒适、便捷、安全的生活环境。随着技术的不断发展和完善,云上智能园区将持续演进,为人们带来更多的惊喜和便利。
|
存储 定位技术 Python
Python读取多个栅格文件并提取像元的各波段时间序列数据与变化值
Python读取多个栅格文件并提取像元的各波段时间序列数据与变化值
209 1
|
SQL 安全 中间件
Go开发:如何封装函数来统计执行时间
Go开发:如何封装函数来统计执行时间
611 0
|
自然语言处理 算法
Jieba进行词频统计与关键词提取
Jieba进行词频统计与关键词提取
|
NoSQL 网络协议 数据可视化
ARM深入理解-hypervisor调试方法二(QEMU+GDB调试ARM程序)
ARM深入理解-hypervisor调试方法二(QEMU+GDB调试ARM程序)