当前位置: 首页 > news >正文

回文链表C++

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

时间复杂度较大的解法:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/// 通过快慢指针找到中间节点,然后以中间节点为起点翻转后半部分的节点// 比较前半部节点和后半部翻转后的节点是否相同
class Solution {
public:ListNode* reverseList(ListNode* head){ListNode* pre=nullptr;ListNode* cur=head;while(cur){ListNode* tmp = cur->next;cur->next = pre;pre = cur;cur=tmp;}return pre;}bool isPalindrome(ListNode* head) {if(head->next == nullptr) return true;// 找到中间节点ListNode* fast = head;ListNode* slow = head;// fast向前的速度是slow的2倍while(fast!=nullptr){fast = fast->next;if(fast!=nullptr){fast = fast->next;}slow = slow->next;}// 翻转链表ListNode* backlist = reverseList(slow);// 依次比较两链表while(backlist){if(head->val != backlist->val)return false;head= head->next;backlist=backlist->next;}return true;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/255215.html

相关文章:

  • 设计模式精讲 Day 8:组合模式(Composite Pattern)
  • Transformer实战——Hugging Face环境配置与应用详解
  • 什么是seata
  • node.js在vscode的配置
  • 多线程八股
  • 【小程序】如何生成特定页面的小程序码
  • 代码审计-fastjson反序列化漏洞
  • .NET基于类名约定的自动依赖注入完整指南
  • python+uniapp基于微信小程序的高校二手商品交易系统
  • NVR的方法多种取决于应用场景
  • PVE使用ubuntu-cloud-24.img创建虚拟机并制作模板
  • 20250620在荣品的PRO-RK3566开发板的Android13系统的uboot阶段就拉高GPIO2C6【driver模式】
  • 第3讲、LangChain性能优化:上下文缓存与流式响应实战指南
  • java面试题03静态修饰类,属性,方法有什么特点?
  • Maven并行构建
  • Anaconda安装env,yml一直卡在Solving environment:不动
  • Spring Boot大文件分块上传:高效解决大文件传输难题
  • React Native【实战范例】同步跟随滚动
  • 【音视频】RTMP协议详解
  • 云计算与5G:如何利用5G网络优化云平台的性能
  • Github 2025-06-20 Java开源项目日报Top8
  • 一体三面:UEBA在数据分析、数据治理与数据安全中的应用洞察
  • 前端开发面试题总结-vue3框架篇
  • 视觉分析在摄像头偏移检测中的应用
  • 汽车前纵梁焊接总成与冲压件的高效自动化三维检测方案
  • 机器学习流量识别(pytorch+NSL-KDD+多分类建模)
  • I排序算法.go
  • DAY 37 早停策略和模型权重的保存
  • el-table复选框分页多选
  • 论文阅读笔记:Digging Into Self-Supervised Monocular Depth Estimation