牛客,OR36 链表的回文结构,快慢指针和反转链表的实践

2024-02-01 23:44

本文主要是介绍牛客,OR36 链表的回文结构,快慢指针和反转链表的实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

还是比较简单的,主要分为三个步骤,两种需掌握的函数实现

目录

主要思路过程,1,找到中间结点,2,反转中间结点往后的结点,3,遍历比较

以下是代码:

每日一表情包:


由于单链表没法让指针往回走,所以,我们要让它能往回走,以好比较,

主要思路过程,1,找到中间结点,2,反转中间结点往后的结点,3,遍历比较

我们用到,查找链表中间结点的操作,和反转链表的操作,

LeetCode:206反转链表-CSDN博客

LeetCode:876.链表的中间结点-CSDN博客

以下是代码:

博主C++还没学,对于这个题来说,C++比C语言只是多了最外面的那一圈,不影响!

(由于C++包含C语言,所以本篇其实还是用C实现的,因为这个题,没有C实现的选项)

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public://找到单链表的中间结点并返回struct ListNode* CheckMid(ListNode* A){struct ListNode*  pslow = A , *pfast = A;while(pfast && pfast->next){pslow = pslow->next;pfast = pfast->next->next;}return pslow;}//逆转单链表/反转单链表,返回逆转后的头结点指针struct ListNode* ReverseListNode(ListNode* ps){struct ListNode* ptail = NULL;while(ps){struct ListNode* pnext = ps->next;ps->next = ptail;ptail = ps;ps = pnext;}return ptail;}bool chkPalindrome(ListNode* A) {// write code here//assert(A);//先用快慢指针找到中间节点struct ListNode* pMid = CheckMid(A);//再逆转链表后半段,//此时后半段链表尾指向的是NULL,前半段指向的是后半段的尾struct ListNode* ptail = ReverseListNode(pMid);//逆转后的链表头结点//然后循环遍历判断while(ptail){if(ptail->val != A->val){return false;}ptail = ptail->next;A = A->next;}return true;}
};

每日一表情包:

阿巴阿巴,带那个赞再走吧!求求啦! 

这篇关于牛客,OR36 链表的回文结构,快慢指针和反转链表的实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668843

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长