当前位置: 首页 > article >正文

【Leetcode Top 100】206. 反转链表

问题背景

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

数据约束

  • 链表中节点的数目范围是 [ 0 , 5000 ] [0, 5000] [0,5000]
  • − 5000 ≤ N o d e . v a l ≤ 5000 -5000 \le Node.val \le 5000 5000Node.val5000

解题过程

背板题,直接抽成一个方法记下来。
初始化三个指针,分别指向当前待处理节点以及它的前后各一个节点,在循环中不断地去维护这三个指针信息即可。
要注意的是最后一轮中 c u r cur cur 指针会轮转指向 n e x t next next 指针所指的下一个节点,所以返回的时候要返回保存了这一轮 c u r cur cur 所指节点的 p r e pre pre 指针所指节点。

具体实现

/**
 * 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) {
        return reverse(head);
    }

    private ListNode reverse(ListNode head) {
        // 初始化三个指针,分别指向头节点和它的前后节点
        // 由于循环中会率先更新 next 指针,这个变量可以不初始化
        ListNode pre = null, cur = head, next;
        while(cur != null) {
            // 反转操作
            next = cur.next;
            cur.next = pre;
            // 轮转指针
            pre = cur;
            cur = next;
        }
        return pre; // 注意要返回 pre
    }
}

http://www.kler.cn/a/415486.html

相关文章:

  • 大数据新视界 -- 大数据大厂之 Hive 数据安全:权限管理体系的深度解读(上)(15/ 30)
  • Ollama - 简化使用本地大语言模型
  • 快速排序hoare版本和挖坑法(代码注释版)
  • QChart数据可视化
  • Harbor安装、HTTPS配置、修改端口后不可访问?
  • 微信小程序数据请求教程:GET与POST请求详解
  • 消息传递神经网络(Message Passing Neural Networks, MPNN)
  • Unity类银河战士恶魔城学习总结(P150 End Screen结束重启按钮)
  • 学习threejs,使用specularMap设置高光贴图
  • 实习冲刺第三十四天
  • 基于单片机的仓库环境无线监测系统(论文+源码)
  • Linux,如何将文件从一台服务器传到另一台服务器上
  • 基于STM32的智能农业灌溉系统设计与实现
  • Java 基础之 List 深度探秘
  • ChatGPT 能否克服金融领域中的行为偏见?分类与重新思考:黄金投资中的多步零样本推理
  • k8s容器存储接口 CSI 相关知识
  • ElasticSearch学习笔记把:Springboot整合ES(二)
  • 内核模块里获取当前进程和父进程的cmdline的方法及注意事项,涉及父子进程管理,和rcu的初步介绍
  • 设计模式学习之——策略模式
  • 使用命令行来刷写ELRS接收器的固件
  • 小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现
  • 重复请求取消(不发请求)
  • NLP信息抽取大总结:三大任务(带Prompt模板)
  • Java面向对象高级学习二
  • Spring MVC 深度剖析:优势与劣势全面解读
  • k8s 1.28 二进制安装与部署