LeetCode 解题思路 12(Hot 100)

在这里插入图片描述

解题思路:

  1. 定义三个指针: prev(前驱节点)、current(当前节点)、nextNode(临时保存下一个节点)
  2. 遍历链表: 每次将 current.next 指向 prev,移动指针直到 current 为 null。

Java代码:

public class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode current = head;
        while (current != null) {
            ListNode nextNode = current.next;
            current.next = prev;
            prev = current;
            current = nextNode;
        }
        return prev;
    }
}

复杂度分析:

  • 时间复杂度: O(n),需要遍历所有节点一次。
  • 空间复杂度: O(1),仅使用固定数量的额外空间。

在这里插入图片描述

解题思路:

  1. 找中点: 使用快慢指针,快指针每次移动两步,慢指针每次移动一步,直到快指针到达末尾。此时慢指针位于链表中点。
  2. 反转后半部分: 将中点之后的链表部分反转。
  3. 对称比较: 从头节点和中点开始,逐个比较对应节点的值是否相等。

Java代码:

public class Solution {
    public boolean isPalindrome(ListNode head) {
        if (head == null || head.next == null) return true;

        ListNode slow = head, fast = head.next;
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }

        ListNode prev = null, curr = slow.next;
        while (curr != null) {
            ListNode nextNode = curr.next;
            curr.next = prev;
            prev = curr;
            curr = nextNode;
        }

        ListNode p1 = head, p2 = prev;
        while (p2 != null) {
            if (p1.val != p2.val) return false;
            p1 = p1.next;
            p2 = p2.next;
        }
        return true;
    }
}

复杂度分析:

  • 时间复杂度: O(n),所有操作均遍历链表一次。
  • 空间复杂度: O(1),仅使用常数额外空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【情境领导者】评估情境——什么是准备度

本系列是看了《情境领导者》一书,结合自己工作的实践经验所做的学习笔记。 准备度是指完成某一项特定的工作所表现出来的能力和意愿水平。 能力:是个人或组织在某一项特定工作或活动所表现出的知识、经验与技能。 意愿:是指个人或组织完成某一…

【GoTeams】-3:构建api、重构错误码

本文目录 1. 构建api梳理调用关系api包的作用路由梳理注册Register代码语法 2. 重构错误码 1. 构建api 首先复制project-user,改名为project-api,放在总的路径下,然后在工作区中进行导入。 运行命令go work use .\project-api\新建工作区之…

clickhouse ppt

《了解ClickHouse:快速数据查询的利器》 大家好,今天我们要介绍一个特别适合处理大规模数据分析任务的数据库系统——ClickHouse。它是一个开源的列式存储数据库管理系统(DBMS),专门针对在线分析处理(OLAP…

深度学习---卷积神经网络

一、卷积尺寸计算公式 二、池化 池化分为最大池化和平均池化 最常用的就是最大池化,可以认为最大池化不需要引入计算,而平均池化需要引出计算(计算平均数) 每种池化还分为Pooling和AdaptiveAvgPool Pooling(2)就是每2*2个格子…

HCIA-路由重分布

一、路由重分布是指在同一个网络中,将一种路由协议所学习到的路由信息导入到另一种路由协议中的技术,实现通信。 二、实验 1、配置 AR1AR2AR3sy sy AR1 int g 0/0/1 ip add 192.168.1.254 24 int g 0/0/0 ip add 10.1.1.1 24 rip version 2 net 192.16…

测试用例详解

一、通用测试用例八要素   1、用例编号;    2、测试项目;   3、测试标题; 4、重要级别;    5、预置条件;    6、测试输入;    7、操作步骤;    8、预期输出 二、具体分析通…

langchain系列(九)- LangGraph 子图详解

一、导读 环境:OpenEuler、Windows 11、WSL 2、Python 3.12.3 langchain 0.3 langgraph 0.2 背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangGraph 时间:20250307 说明:技术梳理&#…

Kotlin和Java区别

哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的AP…

ADSP21569 SPORT使用静态配置驱动方法

ADSP Driver除了可以使用提供API配置,还可以使用静态配置文件进行配置 1,ADI的API比如SPORT驱动API 截图如下所示 可以查看帮助文档获取并使用,调用简洁方便,但不会直观与寄存器联系,不利于调试 2、驱动静态配置可以找…

Web网页开发——水果忍者

1.介绍 复刻经典小游戏——水果忍者 2.预览 3.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…

Manus详细介绍,Manus核心能力介绍

文章目录 前言Manus产品定位与核心理念:Manus产品特性与未来体验战略:Manus商业价值与创新指标:Manus技术特点与竞争优势:Manus用户反馈与展望:Manus市场竞争优势与团队战略:Manus深度总结与启发: 前言 这是一篇关于Manus智能体产品的用户体验评价报告&#xff0c;主要介绍了M…

上线DeepSeek大模型,黄山“大位”智算中心正式点亮

2月28日&#xff0c;智启黄山&#xff0c;算领未来——黄山“大位”智算中心点亮仪式在黄山市大位人工智能计算中心举行&#xff0c;标志着黄山“大位”智算中心正式投入运营。同日&#xff0c;DeepSeek-R1大模型在黄山“大位”正式上线&#xff0c;通过“顶尖大模型普惠算力底…

深入理解 C 语言函数的定义

在 C 语言的编程世界里&#xff0c;函数是构建复杂程序的基石。理解函数的定义与运用&#xff0c;对于编写高效、可维护的代码至关重要。​ 函数定义的基本概念​ 函数是一组执行特定任务的代码块。它将一个复杂的问题分解为一个个小的、可管理的部分&#xff0c;提高了代码的…

解锁STM32外设:开启嵌入式开发新世界

✨✨✨这里是小韩学长yyds的BLOG(喜欢作者的点个关注吧) ✨✨✨想要了解更多内容可以访问我的主页 小韩学长yyds-CSDN博客 目录 探索 STM32 强大的外设家族 初窥门径&#xff1a;STM32 外设开发基础 开发方式与工具 外设配置基础步骤 深入剖析&#xff1a;常见外设应用实例…

基于Spring Boot的高校就业招聘系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

审批流AntV框架蚂蚁数据可视化X6饼图(附注释)

大家好&#xff0c;这次使用的是AntV的蚂蚁数据可视化X6框架&#xff0c;类似于审批流的场景等&#xff0c;代码如下&#xff1a; X6框架参考网址&#xff1a;https://x6.antv.vision/zh/examples/showcase/practices#bpmn 可以进入该网址&#xff0c;直接复制下方代码进行调试…

kettle工具使用从入门到精通(一)

安装 可以从链接: 官网&#xff08;下载链接在Pentaho.pdf文件里&#xff09;或者网络上查找对应的版本安装 Kettle (PDI) 版本与 JDK 版本对应关系 Kettle (PDI) 版本支持的 JDK 版本备注PDI 9.x 及以上JDK 11 或更高版本推荐使用 OpenJDK 或 Oracle JDK 11。PDI 8.xJDK 8 …

深度分页介绍及优化建议

深度分页介绍 查询偏移量过大的场景我们称为深度分页&#xff0c;这会导致查询性能较低&#xff0c;例如&#xff1a; # MySQL 在无法利用索引的情况下跳过1000000条记录后&#xff0c;再获取10条记录 SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10 深度分页问题的原…

深入剖析分布式事务:原理、方案与实战指南

引言&#xff1a;为什么分布式事务成为架构师的必修课&#xff1f; 在微服务架构大行其道的今天&#xff0c;单体应用被拆分成多个独立服务。当一次业务操作需要跨多个服务/数据库完成时&#xff0c;传统数据库事务的ACID特性不再适用。订单创建需要同时操作订单服务和库存服务…

NodeJS学习笔记

NodeJS软件安装 node环境安装&#xff1a; https://nodejs.org 安装好后的node通常在C:\Program Files\nodejs验证安装是否成功 node -v npm -v 进入REPL模式命令行模式 nodeNodeJS在REPL模式和编辑器使用 windos在dos下常用命令 windos命令&#xff1a; 1、cmd dos系统2、…