链表练习 Leetcode234.回文链表

 题目传送门:Leetcode234

给你一个单链表的头节点 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) 空间复杂度解决此题?

试题解析

提供两种方法

第一种方法:数组法

  • 将链表所有节点对应的value值从左到右存入数组中
  • 在数组内进行首尾元素匹配,直至数组中间位置

第二种方法:链表法

  • 首先找到链表中间节点
  • 将中间节点后的链表翻转,得到新链表
  • 将初始链表和新链表的元素进行匹配
数组法代码
class Solution {//双指针方法public:bool isPalindrome(ListNode* head) {if (head->next == nullptr) return true;vector<int> v;//将链表中所有值复制到数组中while (head != nullptr) {v.push_back(head->val);head = head->next;}//数组前后依次比较for (int i = 0, j = v.size() - 1; i < j; i++, j--) {if (v[i] != v[j]) {return false;}}return true;}
};
链表法代码
/*** 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) {int num = 1;ListNode* pTempHead = getMiddleHead(head,&num);pTempHead = reverseList(pTempHead);//num用来计数,进行最后的匹配for(int i = 0; i < num; i ++){if(head->val != pTempHead->val) return false;head = head->next;pTempHead = pTempHead->next;}return true;}//得到中间节点ListNode* getMiddleHead(ListNode* head,int* num){ListNode* pSlow = head;ListNode* pFast = head;while(pFast->next != nullptr && pFast->next->next != nullptr){(*num)++;pSlow = pSlow->next;pFast = pFast->next->next;}return pSlow;}//反转中间节点后的链表ListNode* reverseList(ListNode* head){ListNode* pNewHead = nullptr;ListNode* pTake = head;ListNode* pBreak = head->next;while(pBreak != nullptr){pTake->next = pNewHead;pNewHead = pTake;pTake = pBreak;pBreak = pBreak->next;}pTake->next = pNewHead;return pTake;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/409928.html

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

相关文章

使用WAF防御网络上的隐蔽威胁之扫描器

在网络安全领域&#xff0c;扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞&#xff0c;也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义&#xff1a;扫描器是一种自动化工具&#xff0c;用于探测网络和服务器中的漏洞、开放端口、…

MATLAB R2023b for Mac 中文

MATLAB R2023b 是 MathWorks 发布的最新版本的 MATLAB&#xff0c;适用于进行算法开发、数据可视化、数据分析以及数值计算等任务的工程师和科学家。它包含了一系列新增功能和改进&#xff0c;如改进了数据导入工具&#xff0c;增加了对数据帧和表格对象的支持&#xff0c;增强…

哪些软件有风景素材视频无水印?这些软件不可错过

哪些软件有风景素材视频无水印&#xff1f;如果你是一名摄影师、视频制作者或者只是喜欢欣赏美丽的风景&#xff0c;那么你一定不能错过本文介绍的这几款软件。这些软件以其丰富的风景素材视频资源&#xff0c;成为无数创作者和爱好者的首选。 1. 清爽视频编辑 清爽视频编辑器…

【河海大学论文LaTeX+VSCode全指南】

河海大学论文LaTeXVSCode全指南 前言一、 LaTeX \LaTeX{} LATE​X的安装二、VScode的安装三、VScode的配置四、验证五、优化 前言 LaTeX \LaTeX{} LATE​X在论文写作方面具有传统Word无法比拟的优点&#xff0c;VScode作为一个轻量化的全功能文本编辑器&#xff0c;由于其极强的…

LeetCode 热题 100 | 哈希

目录 1 基础知识 1.1 定义哈希表 1.2 遍历哈希表 1.3 查找某一个键 1.4 插入键值对 1.5 获取键值对的值 1.6 搜索功能 2 三道题 2.1 1. 两数之和 2.2 49. 字母异位词分组 2.3 128. 最长连续序列 菜鸟做题第一周&#xff0c;语言是 C 1 基础知识 1.1 定…

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥&#xff08;非对称加密&#xff09;、混合加密理论《introduction to modern cryphtography》 写在最前面8.1 公钥加密理论随机预言机模型&#xff08;Random Oracle Model&#xff0c;ROM&#xff09; 写在最前面 主要在 哈工大密码学课程 张…

JavaScript从入门到精通系列第三十一篇:详解JavaScript中的字符串和正则表达式相关的方法

文章目录 知识回顾 1&#xff1a;概念回顾 2&#xff1a;正则表达式字面量 一&#xff1a;字符串中正则表达式方法 1&#xff1a;split 2&#xff1a;search 3&#xff1a;match 4&#xff1a;replace 知识回顾 1&#xff1a;概念回顾 正则表达式用于定义一些字符串的…

从传统到智能:机器视觉检测赋能PCB行业数字化转型!

PCB板在现代电子设备中是一个重要的组成部分&#xff0c;它是用来集成各种电子元器件的信息载体。在电子领域中&#xff0c;PCB板有着广泛的应用&#xff0c;而它的质量直接影响到产品的性能。随着电子科技技术和电子制造业的发展&#xff0c;贴片元器件的体积 变小&#xff0c…

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行&#xff0c;投资趋向于保守、人们消费降级&#xff0c;对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级&#xff0c;金融企业都在寻求客户管理的新策略&#xff0c;维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…

表的增删改查 进阶(一)

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;MySql&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 数据库约束 约束类型 NOT NUll 约束 UNIQUE 约束 D…

8x8离散余弦的快速精确实现使用数据流单指令多数据扩展指令集进行转换MMX 说明书

1.https://www.cs.cmu.edu/~barbic/cs-740/ap922.pdf 2.FFmpeg: libavcodec/x86/fdct.c Source File 再学FDCT快速精确实现协议改写浮点FDCT, ffmpeg的dct使用的就是这个快速精确协议。 3.http://dspace.fcu.edu.tw/bitstream/2377/30265/1/ICM%204-1.pdf 我想如把所有余弦…

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型 0. 背景1. 安装依赖2. 开发 main.py3. 运行 main.py 0. 背景 看了一些文章之后&#xff0c;今天尝试在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型。 1. 安装依赖 pip install torch torchvision …