LeetCode_链表的回文结构

✨✨所属专栏:LeetCode刷题专栏✨✨

✨✨作者主页:嶔某✨✨

题目描述:

对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

就比如:1->2->3->2->1就是回文链表,1->2->3->1->2不是回文链表。

示例代码:

class PalindromeList {
public:bool chkPalindrome(ListNode* A) {// write code here
};

 分析:

这里我们得到解法是先找到链表的中间节点,之后将中间节点后面的节点全部逆置。之后再从mid节点和链表头节点开始遍历、判断值是否相同,以mid节点和链表头节点都不为空为循环条件。

 所以这里我们先要写出找中间节点的代码:

以前做过类似的题《快慢指针》。快指针一次走两步,慢指针一次走一步。最终慢指针会停在中间节点处。

 注意:这里while循环的条件不能把fast->next放在前面,要先判断的fast不为空,再判断fast的下一个节点是否为空。否则会导致空指针的解引用。

struct ListNode* middleNode(struct ListNode* head) {struct ListNode* fast = head, *slow = head;while(fast && fast->next) {slow = slow->next;fast  = fast->next->next;}return slow;
}

链表逆置代码:

struct ListNode* ReverseList(struct ListNode* head ) {struct ListNode* pcur = head;struct ListNode* prev = NULL;while(pcur){struct ListNode* tmp = pcur->next;pcur->next = prev;prev = pcur;pcur = tmp;}    return prev;
}

 主代码:

class PalindromeList {
public:bool chkPalindrome(ListNode* A) {// write code herestruct ListNode* mid = middleNode(A); struct ListNode* rmid = ReverseList(mid);while(A && rmid){if(A->val != rmid->val)return false;A = A->next;rmid = rmid->next;}return true;}
};

本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌、Meta、OpenAI 联同其他行业巨头共同打击 AI 产生的儿童性虐待图像|TodayAI

谷歌、Meta、OpenAI 等全球科技巨头已联合行动,与其他行业领导者共同宣布,将加强措施,防止人工智能技术被用来制造或传播儿童性虐待图像。 为打击儿童性虐待材料(CSAM:child sexual abuse material)的传播…

wfs 文件存储系统 v1.0.5

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件…

《设计模式之美》第三章 总结

《设计模式之美》总结 第三章 设计原则 3.1 单一职责原则:如何判定某个类的职责是否单一 3.1.1 单一职责原则的定义和解读 定义:一个类或模块只负责完成一个职责(功能) 含义:不要设计功能大而全的类或模块&#xff…

汽车纵染压制专用液压机比例阀放大器

汽车纵染压制专用液压机比例阀放大器是一种专门用于汽车纵梁拉伸工艺的设备,它也可以用于其他金属薄板的压制成型及校正工艺。该类型的液压机通常具备独立的动力机构和电气系统,采用PLC技术进行控制,以确保操作的准确性和稳定性。除了纵梁拉伸…

【随想录】Day31—第八章 贪心算法 part01

目录 题目1: 455. 分发饼干1- 思路2- 题解⭐分发饼干 ——题解思路 题目2: 摆动序列1- 思路2- 题解⭐摆动序列 ——题解思路 题目3: 最大子数组和1- 思路2- 题解⭐ 最大子数组和 ——题解思路 题目1: 455. 分发饼干 题目链接:455. 分发饼干 1- 思路 贪心的思路&am…

Linux多进程(二)进程通信方式二 消息队列

消息队列是在两个进程之间传递二进制块数据的一种简单有效的方式。每个数据块都有一个特定的类型,接收方可以根据类型来有选择地接收数据,而不一定像管道和命名管道那样必须以先进先出的方式接收数据。 一、创建消息队列 创建一个消息队列或者获取一个…

Linux多进程(二)进程通信方式一 管道

管道的是进程间通信(IPC - InterProcess Communication)的一种方式,管道的本质其实就是内核中的一块内存(或者叫内核缓冲区),这块缓冲区中的数据存储在一个环形队列中,因为管道在内核里边,因此我们不能直接…

Go语言并发赋值的安全性

struct并发赋值 type Test struct {X intY int }func main() {var g Testfor i : 0; i < 1000000; i {var wg sync.WaitGroup// 协程 1wg.Add(1)go func() {defer wg.Done()g Test{1, 2}}()// 协程 2wg.Add(1)go func() {defer wg.Done()g Test{3, 4}}()wg.Wait()// 赋值…

全氟己酮灭火绳的用法早知道:灭火绳多少钱一米?

全氟己酮灭火装置作为一种高效、安全、环保的灭火技术&#xff0c;已经成为了备受青睐的新型灭火选择之一。伴随着市场需求不断增长&#xff0c;在全氟己酮厂家的努力下&#xff0c;各式各样的全氟己酮自动灭火装置不断涌现&#xff0c;包括自动灭火贴、灭火片、灭火毯、灭火绳…

直播报名 | 科技出海新势力,遥感+AI助力一带一路

遥感技术的出海之路顺畅吗&#xff1f; 国内外遥感应用的关注点相同吗&#xff1f; 目前珈和主要辐射哪些海外国家&#xff1f; … 上周数据赋农季第三期《科技出海&#xff0c;遥感AI赋能“一带一路”提升种植园规模效益》直播预告一出&#xff0c;小伙伴们纷纷来咨询珈和的海…

《S32G3系列芯片——Boot详解》持续更新中...

总目录&#xff1a;《S32G3系列芯片——Boot详解》持续更新中... ... 一、前言二、启动时序概述&#xff08;Boot Sequence&#xff09;三、启动特性&#xff08;Boot Features&#xff09;四、启动模式&#xff08;Boot Mode&#xff09;五、《S32G3系列芯片——Boot详解》系列…

Centos之yum安装好玩的命令

1.会动的小火车 我在root下使用的 yum install sl.x86_64sl2.figlet yum install figlet.x86_64figlet 55553.cowsay会说话 yum install cowsay

力扣数据库题库学习(4.23日)

610. 判断三角形 问题链接 解题思路 题目要求&#xff1a;对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。 对于三个线段能否组成三角形的判定&#xff1a;任意两边之和大于第三边&#xff0c;对于这个表内的记录&#xff0c;要求就是&#xff08;x…

一看就会,uni-app打包运行成微信小程序,部署

前言 这篇文章主要针对刚开始接触混合开发的小伙伴&#xff0c;全文使用uniapp框架&#xff0c;使用HBuilderX结合微信小程序开发工具作为开发环境。搭建一个简单的入手项目&#xff0c;主要是对搭建项目的流程做一个简单介绍 提示&#xff1a;以下是本篇文章正文内容&#xff…

【GEE】优雅地实现年度、季度、月度甚至旬度影像合成(附完整代码)

以下文章来源于GEE学习室 &#xff0c;作者GEEStudyRoom 光学影像由于受到天气因素&#xff08;云、雨和雾等&#xff09;影响&#xff0c;导致单张影像数据存在大量坏死像元。此处&#xff0c;坏死像元指由于受到云遮挡等导致下垫面地物覆盖不能准确被卫星信息捕捉从而不能正…

【Linux系统编程】第八弹---权限管理操作(中)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、修改文件权限的做法(二) 2、文件类型 3、可执行权限 4、创建文件/目录的默认权限 4.1、权限掩码 总结 前面一弹我们学…

git 重命名文件,提交后,此文件的提交记录丢失

零、问题现象&#xff1a; 文件重命名后&#xff0c;提交到 git 仓库&#xff0c;发现重命名操作 变成 删除旧文件&#xff0c;新增一个新文件&#xff0c;原来文件的提交记录丢失&#xff0c;看不到了。 一、正确的重命名提交方法 1.1、 先执行add命令来将修改内容后的文件…

校园论坛圈子,校园跑腿小程序,2024 一款功能强大校园综合服务小程序开源源码

目的 本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统&#xff0c;前台用户使用小程序发布跑腿任何和接跑腿任务&#xff0c;系统基于TP6uni-app框架开发;客户移动端采用uni-app开发&#xff0c;管理后台TH6开发&#xff1b;通过后台管理跑腿的用户、查看跑腿信…

2024年最佳软件测试工具40强清单

什么是测试工具 软件测试工具是指那些支持从计划、需求收集、构建创建、测试执行、缺陷记录到测试分析等各种测试活动的产品。这些工具主要用于检测软件的稳定性、彻底性以及其他性能参数。 市场上有大量的软件测试工具&#xff0c;众多选择使得难以确定最适合你项目的测试工具…

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格&#xff0c;例子11.源码12.源码1效果截图 四、给表格添加动画效果&#xff0c;例子21.源码22.源码2的运行效果 五、结语六…