【LeetCode】206. 反转链表

题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

https://leetcode.cn/problems/reverse-linked-list/description/

思路

头插法

原地反转方法(空间O(1))

code

java 复制代码
//头插法
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head== null) return null;
        ListNode cur=head;
        ListNode dummy= new ListNode(0, null);//反转链表的dummy
        ListNode oldNode=null;
        while(cur!=null){
		    // 创建新节点,值为cur.val,next指向之前创建的节点
		    ListNode newNode = new ListNode(cur.val, oldNode);
		    
		    // 让虚拟头节点指向最新创建的节点
		    dummy.next = newNode;
		    
		    // 更新oldNode为当前新节点
		    oldNode = newNode;
		    
		    // 移动原链表指针
		    cur = cur.next;
        }
        return dummy.next;
    }
}
java 复制代码
//原地反转
public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode cur = head;
    while(cur != null) {
     	 ListNode next = cur.next;  // 保存下一个节点(防止链表断裂)
        cur.next = prev;           // 反转:当前节点指向前一个节点
        prev = cur;                // prev移动到当前节点
        cur = next;                // cur移动到下一个节点
    }
    return prev;


}
相关推荐
richard_yuu8 小时前
动态规划:强化学习的「数学基础」,从 MDP 到值迭代
深度学习·神经网络·算法·yolo·机器学习·动态规划
mmmmath_38 小时前
LeetCode.225.用队列实现栈
算法
Elaine3368 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
2601_965742228 小时前
布局GEO AI本地营销,我重点看这几个细节
大数据·人工智能·算法·ai·新媒体运营
EatFan8 小时前
AI Agent 上生产前先加三道闸门:审批、限权、可回放的工程实践
人工智能·python·算法·多智能体·ai agent·mcp·harness
思茂信息8 小时前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
Persistent的粽子!9 小时前
双指针算法:最大盛水容器
c++·算法·leetcode
hold?fish:palm9 小时前
44 二叉搜索树中第K小的元素
开发语言·c++·算法
Chen—LSN10 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表
anew___10 小时前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法