1、源代码

class Solution {public boolean isPalindrome(ListNode head) {ListNode fast=head,slow=head; //快慢指针都在头结点//快指针走2步,慢指针走一步。//双数快指针最后是null,单数快指针下一位是nullwhile(fast!=null && fast.next!=null){fast=fast.next.next;slow=slow.next;}//移动之后,如果是奇数。此时slow在中位数,要向下移动一位if(fast!=null){slow=slow.next;}slow=reverse(slow);//反转链表fast=head;//反转之后快指针回到头结点//对值进行比较while(slow!=null){if(fast.val!=slow.val){return false;}fast=fast.next;slow=slow.next;}return true;}/*反转链表*/public ListNode reverse(ListNode curr){ListNode pre=null;while(curr!=null){ListNode next=curr.next;curr.next=pre;pre=curr;curr=next;}return pre;}
}

2、解析

1、题目

2、思路

我们把整个链表看成镜像,因此我们只需要把左右进行对比,这样就会出现一个奇偶数问题,因此判断方法采用快慢指针

快指针一次走2步,慢指针一次走一步,当快指针走到null代表为偶数,快指针的next是null代表为奇数,因此得到以下代码

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

移动之后,如果是奇数。此时slow在中位数,要向下移动一位,因为中位数是谁都无所谓

if(fast!=null){slow=slow.next;
}

然后就需要把后半段链表进行反转,此时要把快指针放到头结点

slow=reverse(slow);//反转链表
fast=head;//反转之后快指针回到头结点

反转链表代码:

public ListNode reverse(ListNode curr){ListNode pre=null;//这个为curr的前一个节点while(curr!=null){ListNode next=curr.next; //保存当前指针的下一个curr.next=pre; //把curr的next变成前一个(反转核心)pre=curr; //把pre移动到currcurr=next;//把curr移动到next}return pre;
}

然后一一进行值对比,如果对不上直接false

while(slow!=null){if(fast.val!=slow.val){return false;}fast=fast.next;slow=slow.next;
}
return true;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917864.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917864.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917864.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025《艾诺提亚失落之歌》逆向工程解包尝试

前言 想开发一下光明之魂,看能不能解包《艾诺提亚失落之歌》的模型。 之前写了(https://blog.csdn.net/weixin_42875245/article/details/148616547?spm1001.2014.3001.5501) 沿用这个思路进行逆向工程解包。 文章目录请添加图片描述前言…

JVM 03 类加载机制

JVM 将字节码二进制流加载到内存称为类加载。 什么时候加载类 new 实例化对象。而对象所属类还没被加载。读取/设置类的静态非常量字段,常量字段在常量池。调用类的静态方法。类初始化,优先初始化父类。虚拟机启动时,先加载用户指定的主类。 …

STM32H7+FreeRTOS+LwIP移植EtherCAT开源主站SOEM

代码下载什么的就不多说了,直接看需要移植修改的代码。 1、osal.c修改 /******************************************************************************* * *** **** *** *** …

VijosOJ:中文信息学竞赛的二十年开源之路

VijosOJ:中文信息学竞赛领域的老牌开源在线判题系统 在中文编程教育与信息学竞赛的发展历程中,在线判题系统(OJ)扮演了至关重要的角色。它们不仅是选手训练的 “战场”,更是知识传递与社区交流的枢纽。VijosOJ&#x…

QPainter::CompositionMode解析

基本概念目标(Destination):已经存在的像素。源(Source):要绘制的新像素。组合模式:决定源和目标如何混合。总结SourceOver:源绘制在目标之上。DestinationOver:目标绘制在源之上。Clear:二者重叠区域被清空…

对接钉钉审批过程记录(C#版本)

钉钉开放平台:API总览 - 钉钉开放平台 按照开放平台操作指引,进入到钉钉开发者后台:开发者后台统一登录 - 钉钉统一身份认证,进行应用创建。 按照开放平台指引下载钉钉SDK(新版)。 在vs引入钉钉dll文件。 获…

AFSIM入门教程03.03:更新所有依赖库版本

系列索引:AFSIM入门教程索引 上一篇中更新了tiff库版本,本文将更新所有使用到的依赖库版本。 失败了 依赖库 首先获取哪些库被使用了。打开源码目录,搜索# Configure the 3rd_party,可以看到调用第三方库的代码。 官方提供的…

完美解决hive external表中csv字段内容含“,“逗号的问题

为解决hive表中csv字段内容含","逗号的问题,网上几乎都是说要用org.apache.hadoop.hive.serde2.OpenCSVSerde。 使用方法为: 1、mysql导出时,加一个ENCLOSED BY ‘"’, 示例: mysql -h 10.16.0.10 -P …

【Git】修改本地和远程的分支名称

其原理是: 对于本地:可直接修改分支名称;对于远程:不可直接重命名分支,所以应该将修改好名称的分支以新分支的形式推送上远程仓库,之后将新分支与远程新分支关联,之后可选择删除旧分支# 例子&am…

ubuntu24.04安装selenium、chrome、chromedriver

实验环境:kaggle notebook、colab notebook1、安装chrome!wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb!sudo dpkg -i google-chrome-stable_current_amd64.deb!sudo apt-get install -f!export QT_QPA_PLATFORMoffscreen!sudo…

西门子PLC基础指令6:读取时钟指令、设置时钟指令、使能含义与注意

读/写指令 1. 读取时钟 指令 READ_RTCREAD_RTC (RTC 全称是 Real - Time Clock,即实时时钟 )指令的主要作用是将 CPU 内部实时时钟(RTC)的当前日期和时间信息读取出来,并存储到以指定字节地址(图…

GeoTools 结合 OpenLayers 实现缓冲区分析

前言❝ 缓冲区分析是地理信息系统(GIS)空间分析的核心功能之一。它通过围绕点、线或面等地理实体,自动生成指定距离(或宽度)的等距区域(缓冲区)。该功能为量化空间邻近度、评估影响范围、识别潜…

SpringBoot 接入SSE实现消息实时推送的优点,原理以及实现

SpringBoot 接入SSE实现消息实时推送的优点,原理以及实现 前言 上一篇文章 我写的关于SpringBoot整合t-io是websocket实时通信的文章中我们可以了解到 websocket是双向通信的,而且需要TCP连接的支持,今天在这里我要说的SSE(Server-Sent Events) 是一个单项通信的消息实时推…

创建型设计模式:对象诞生的艺术与智慧

🎭 创建型设计模式:对象诞生的艺术与智慧 💡 温馨提示:本文将以轻松有趣的方式带你探索设计模式的世界,就像在听一个关于"如何优雅地生孩子"的故事一样! 🚪 传送门:在开始…

如何解决pip安装报错ModuleNotFoundError: No module named ‘gensim’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘gensim’问题 摘要 在使用 PyCharm 2025 进行 Python 开发时,常常需要通过 pip install 安装第三方包以丰富项目功能。但在安装 gensim 等包时&…

【嵌入式电机控制#26】BLDC:三相模拟采集

之前有些网友试着用有刷的平均电流法采集三相,还搞了个闭环控制。求!结果直接把驱动板给干没了......做过仿真的朋友们都知道,无刷电机的相电流波形是介于方波和正弦波的。如果拿平均电流去测量,很不靠谱。这节内容为大家分享采集…

ref存储对象和reactive深度响应式递归地对对象的嵌套属性进行响应式处理

ref 不会递归地对 对象 或 数组 中的每个属性或元素进行深度响应式处理。如果你需要递归处理嵌套属性,reactive 是更适合的选择。让我通过具体的例子来展示这一点。 例子:ref 存储对象和嵌套对象 1. 使用 ref 存储嵌套对象: import { createA…

小鹏汽车前端面经

前端基础与浏览器机制 (Front-End Fundamentals & Browser Mechanics) 这些问题涵盖了Web工作的基本原理,包括网络、渲染和浏览器特性。 1. 浏览器渲染与性能 (Browser Rendering & Performance) URL输入发生什么?(What happens when you type a…

利用DeepSeek编写go语言按行排序程序

听说google出品的go语言也是系统开发中常用的,性能到底怎么样,还是老办法,让DeepSeek写个程序跑一下,基于以往的经验,直接让它同时编写有缓冲和无缓冲版本。 package mainimport ("bufio""fmt"&qu…

《解构Angular组件变化检测:从自动到手 动的效能突破》

为何有时数据更新后视图却无动于衷?为何看似简单的操作会引发连锁式的性能损耗?要解开这些疑问,需要穿透表层的API调用,深入到框架设计的底层逻辑中去。变化检测的核心使命,是确保视图层能够准确反映数据层的当前状态。这种"数据-视图"的同步关系,是所有前端框…