力扣 简单 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;
    }
}
相关推荐
程序员天天困5 分钟前
Arthas Profiler 火焰图实战:CPU 热点在哪一目了然
java·jvm·后端
用户31268748772015 分钟前
@Autowired 注入的是代理对象?Spring AOP 代理选择原理一次讲透
java·spring
白白白小纯17 分钟前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
@insist12319 分钟前
信息系统管理工程师-任务、标准、EDM 过程与关键域
java·大数据·数据库
木子杳衫30 分钟前
Java高级进阶 | 单元测试JUnit + 反射机制实战详解
java·junit·单元测试
Frostnova丶33 分钟前
(19)LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
qq_3660862235 分钟前
关于接口路径中中文值解码问题
java·开发语言·数据库
Frostnova丶37 分钟前
(18)LeetCode 73. 矩阵置零
算法·leetcode·矩阵
大白菜和MySQL38 分钟前
elk部署和kibana图形化展示
java·笔记·elasticsearch
Zane19941 小时前
JMM 与 happens-before:一次搞懂 Java 内存模型
java·后端