力扣 简单 206.反转链表

文章目录

题目介绍

题解

法一:双指针
在遍历链表时,将当前节点的 next 改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。

代码如下:

java 复制代码
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null, cur = head;
        while (cur != null) {
            ListNode nxt = cur.next;
            cur.next = pre;
            pre = cur;
            cur = nxt;
        }
        return pre;
    }
}

法二:递归

java 复制代码
/**
 * 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 reverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return newHead;
    }
}
相关推荐
雨过天晴而后无语9 分钟前
Windchill中MVC选中事件级联另一MVC内容
java·javascript·html·mvc
胖咕噜的稞达鸭14 分钟前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
笑口常开xpr21 分钟前
【C++】模板 - - - 泛型编程的魔法模具,一键生成各类代码
开发语言·数据结构·c++·算法
陈小桔34 分钟前
Springboot之常用注解
java·spring boot·后端
立志成为大牛的小牛1 小时前
数据结构——十四、构造二叉树(王道408)
数据结构·笔记·学习·程序人生·考研
IT小番茄1 小时前
Kubernetes云平台管理实战:自动加载到负载均衡(七)
算法
笑口常开xpr1 小时前
【C++继承】深入浅出C++继承机制
开发语言·数据结构·c++·算法
code小毛孩2 小时前
如何简单的并且又能大幅度降低任务队列的锁粒度、提高吞吐量?
java·jvm·数据库
你不是我我2 小时前
【Java开发日记】请介绍类加载过程,什么是双亲委派模型?
java·开发语言
HQChart2 小时前
HQChart使用教程30-K线图如何对接第3方数据46-DRAWTEXT_FIX数据结构
数据结构·hqchart·k线图