牛客,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

相关文章

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi