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://www.hqwc.cn/news/644536.html

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

相关文章

为什么要写技术方案?

技术方案是为研究解决各类技术问题,有针对性,系统性的提出的方法、应对措施及相关对策。技术方案设计是一个技术开发者必备的能力,特别是对于高级、资深、架构师等角色。技术方案设计不仅能够帮助我们明确需求,规划架构&#xff0…

Linux——进程基本概念下篇

Linux——进程基本概念下篇 文章目录 Linux——进程基本概念下篇一、环境变量1.1 环境变量的定义1.2 环境变量的相关命令1.3 命令行参数1.4 本地变量和环境变量1.5 常规命令和内建命令 二、进程地址空间2.1 地址空间的概念2.2 页表和MMU2.3 地址空间的作用2.4 地址空间的好处 一…

串口服务器可以直接连接工业路由器吗

串口服务器可以直接连接工业路由器吗 在工业物联网的架构中,串口服务器和工业路由器都是不可或缺的重要组件。串口服务器的主要功能是将串口通信转换为网络通信,实现数据的远程传输和管理;而工业路由器则负责在工业环境中提供稳定、可靠的网…

[CVE-2021-44228]:log4j2漏洞复现流程详解(vulhub环境)

CVE-2021-44228漏洞复现 漏洞简介 Apache Log4j2是Apache软件基金会下的一个开源的基于java的日志记录工具。该远程代码执行漏洞基于攻击者使用${}关键标识触发JNDI注入漏洞,可以执行任意代码。 漏洞复现 靶机:192.168.74.150 攻击机:192…

PD虚拟机(Parallels Desktop)2024mac苹果电脑19免费版下载

PD虚拟机(Parallels Desktop 虚拟机)是一款知名的系统虚拟化软件,PD虚拟机允许用户在一个操作系统中同时运行另一个或者多个操作系统。这种技术在多种场景中非常有用,比如程序开发、专业研究、游戏对战等,尤其是对于需…

解锁财富密码:挂售模式遇上社交电商大礼包

大家好,我是微三云周丽,今天给大家分析当下市场比较火爆的商业模式! 小编今天跟大伙们分享什么是挂售+社交电商模式? 在数字化快速发展的今天,电商行业不断创新,寻求突破。挂售模式作为电商领域…

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

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

Python-VBA函数之旅-int函数

目录 一、int函数的常见使用场景: 二、int函数使用注意事项: 三、如何用好int函数? 1、int函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:神奇夜光杯-CSDN博客 一、…

基于springboot+vue的游艇停泊系统

一、系统架构 前端:vue2 | element-ui |html 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. web端-登录 02. web端-系统首页1 03. web端-系统首页2 04. web端-泊位 05. web…

配线架与交换机:了解差异和最佳用途

什么是配线架,它与交换机有何不同? 配线架是一种具有多个插孔的设备或单元,用于方便管理电缆连接。 它充当静态交换机,允许轻松连接或断开网络设备,并为所有电缆连接提供集中位置。 另一方面,Switch 是一种…

朴素贝叶斯算法分类

def loadDataSet():postingList[[my, dog, has, flea, problems, help, please], #切分的词条[maybe, not, take, him, to, dog, park, stupid],[my, dalmation, is, so, cute, I, love, him],[stop, posting, stupid, worthless, garbage],[mr, licks, ate, my, steak, …

各平台奇怪问题备忘录

微信小程序 小程序报错Page 页面路径 has not been register yet 描述:uniapp做微信小程序开发时,新增某页面后,小程序跳转该页面报错Page 页面路径 has not been register yet 已知:page.json已添加该页面,小程序a…