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

LeetCode 234 - 回文链表 C++ 实现

leetcode 题目:https://leetcode.cn/problems/palindrome-linked-list/description/

1. 题目:

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

示例 1:
输入:head = [1,2,2,1]
输出:true

示例 2:
输入:head = [1,2]
输出:false

提示:链表中节点数目在范围[1, 105] 内
0 <= Node.val <= 9
进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

2. 解题思路:

中等难度的符合题目:
思路:寻找链表的中间位置 + 翻转链表
寻找链表的中间位置是LeetCode 题目 806; 视频讲解
翻转链表 是 Leetcode 题目 234; 视频讲解

3. C++ 实现

C++ 实现:

/*** 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:bool isPalindrome(ListNode* head) {if(!head || !head->next)return true;ListNode* slow = head;ListNode* fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}// 如果链表是奇数个数,则把正中的归到左边if(fast != NULL) slow = slow->next;slow = reverse(slow);fast = head;while(slow && fast){if(slow->val != fast->val){return false;}fast = fast->next;slow = slow->next;}return true;}//  翻转链表实现ListNode* reverse(ListNode* head){if(!head)return NULL;ListNode* pre_node = NULL;ListNode* cur_node = head;while(cur_node != NULL){ListNode* next = cur_node->next;cur_node->next = pre_node;pre_node = cur_node;cur_node = next;}return pre_node;}};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计模式之结构型模式
  • 深入浅出:理解TCP传输控制协议的核心概念
  • Go 语言错误处理
  • keepalive原理详解及应用
  • Windows采用VS2019实现Open3D的C++应用
  • ~Keepalived高可用集群~
  • CAPL使用结构体的方式组装一条DoIP车辆识别请求报文(payload type 0x0002)
  • [Datawhale AI夏令营 2024 第四期] 从零入门大模型微调之旅的总结
  • wordpress网站“ERR_CONNECTION_REFUSED”错误
  • string模拟
  • leetcode 21-30(2024.08.16)
  • P2460[SDOI2007] 科比的比赛
  • PyTorch--深度学习
  • 开源通用验证码识别OCR —— DdddOcr 源码赏析(一)
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【css3】浏览器内核及其兼容性
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • css属性的继承、初识值、计算值、当前值、应用值
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • go语言学习初探(一)
  • java第三方包学习之lombok
  • LeetCode18.四数之和 JavaScript
  • Mac转Windows的拯救指南
  • mysql常用命令汇总
  • npx命令介绍
  • QQ浏览器x5内核的兼容性问题
  • Spring Cloud Feign的两种使用姿势
  • 测试如何在敏捷团队中工作?
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 前端面试总结(at, md)
  • 使用 @font-face
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​2020 年大前端技术趋势解读
  • ​字​节​一​面​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Linux(帮助手册)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)关于多人操作数据的处理策略
  • (转)详解PHP处理密码的几种方式
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 外观者设计模式 实现,多种支付选择
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .Net环境下的缓存技术介绍
  • .NET序列化 serializable,反序列化